Comments 135
Автор, попробуйте сделать из этого новый вид капчи, получится очень интересная вещь)
Слишком легко взломать с помощью обычного словаря.
На некоторых сайтах требуется ввести капчу из двух английских слов, причем часто слова несуществующие(или неизвестные мне), т.е. порядок букв незнаком. Так вот это жутко раздражает при вводе, учитывая еще и искажения.
Меня больше бесит когда помимо незнакомых слов, ещё и написаны они так что глаза сломать можно. Я такие капчи называю «система угадай мелодию с одной ноты». Аж бесит, ощущение что не роботов фильтруют а людей…
Самая ужасная капча в мире это во вконтакте. Не знаю как вы, но я обычно разгадываю её попытки с 6-8 (в прямом смысле, без преувеличения), притом каждая из моих попыток длится по секунд 5-10 (то бишь достаточно вдумчиво).
Наверное, ты видел не все капчи в мире.
Попробуй разгадать вот эту

Попробуй разгадать вот эту

Само собой, я имел ввиду стандартные капчи.
léi tíng zhàn chúi
ReCaptcha порой вводит в ступор покруче всякого вконтакта:
img.picsa.ru/pictures/0/000/092/116/92116.png
img.picsa.ru/pictures/0/000/092/116/92116.png
Я сразу ухожу с таких сайтов. Мое мнение таково: если капча мешает пользователю — убираем капчу и набираем модераторов. Если пофиг на людей ставим капчу покруче.
Самое смешное что капча системы «угадай мелодию» нередко стоит на сайтах типа маленьких блогов и.т.д.
Т.е проблемы спама там как таковой нет. Не было бы капчи (у меня был такой сайт) ну максимум раз в недельку один спамобот пролез, и ничего страшного бы не случилось, удалить в два клика и не париться. А вот сколько ценных людей/мнений отсеивается, одному богу известно…
Т.е проблемы спама там как таковой нет. Не было бы капчи (у меня был такой сайт) ну максимум раз в недельку один спамобот пролез, и ничего страшного бы не случилось, удалить в два клика и не париться. А вот сколько ценных людей/мнений отсеивается, одному богу известно…
Это рекачпа, вводя её вы фактически играете роль файнридера. Она вам дает на распознание два слова: одна проверочное, которое система знает, а второе — не распознанное, вводя которое вы помогаете гуглу распознать книгу. Фишка в том, что вводить можно только одно — проверочное, а вместо второго можно написать что угодно. После некоторой практики легко распознать какое из слов проверочное (сейчас такие слова слега раздвоены, но это меняется время от времени), но вот основное правило: если в слове есть знаки препинания, числа, любые не латинские символы — вместо это слова можно просто стукнуть по клавиатуре и отправить случайный набор символов.
Вот вам явный пример, когда второе слово вводить не обязательно: img850.imageshack.us/img850/5286/captchafc.jpg
Вот вам явный пример, когда второе слово вводить не обязательно: img850.imageshack.us/img850/5286/captchafc.jpg
Боюсь, без контекста не получится распознать слово (на каптче).
Большие слова плохо воспринимаются, те, что поменьше — нормально.
Однако, в целом текст плохо воспринимается. Возможно, причина тому — понедельник
Однако, в целом текст плохо воспринимается. Возможно, причина тому — понедельник
А я на оборот, только когда автор раскрыл суть понял, что читаю исковерканный текст. Я думаю тут еще играет роль навык скорочтения и словарный запас. В этих случаях мозг быстрее подбирает слова и не замечает проблем.
Нет, вступительный текст — понятно, а вот текст на скриншоте — там уже интереснее
Тематика тоже имеет огромное значение, я споткнулся на слове «акустики» (четвертое) толкьо потому что не был готов к этой теме. Думаю если бы перед этим читал тексты на подобную тематику, то проблемы бы не возникло. Да еще и в понедельник, с утра, пока мозги «не прогреты»…
У меня тоже такое ощущение, что текст со скриншота программы воспринимается куда хужэе, чем «классический» вариант. Возможно, причиной тому то, что в классическом варианте часто вторая и предпоследняя буквы остаются на месте, а также особо нет непроизносимых буквосочетаний.
Перемешивание букв + транслит — вот это гремачая смесь получится…
Уровень для продвинутых: перемешивание букв после транслита.
Уровень для продвинутых: перемешивание букв после транслита.
Я как-то пробовал читать перевернутый текст, тоже практически не отличается от привычного процесса. Можете добавить в свою программу еще и поворот на 180°)
Тогда можно развить до уровня игры, на первом уровне просто надо ввести текст, распознав за время, с каждым следующим усложняется трудоемкость восприятия. Повороты, искажения. И продавать в китай для тренировок распознавателей каптч.
В последнее время всё чаще капчи распознаются не китайцами, а пользователями adult-сайтов, которые вводят каптчу с целью увидеть вожделенные картинки/видео. Этим, в отличие от китайцев, даже платить не надо — сами всё делают.
Коли ради интереса… даешь обратное преобразование! :) але без словарей не обойтись.
Без словарей никак. Но в целом несложно, достаем слова по первой букве, отсеиваем по длине и последней букве, и фильтруем по набору букв. Получится список подошедших.
Гораздо больше можно будет отсеять если учесть вероятности следования определённых букв друг за другом.
Во-первых, марковские цепи половину сделают гораздо более простыми методами.
Во-вторых — берем словарь, сортируем буквы в каждом слове по алфавиту, строим дерево последовательностей, в распознаваемом слове также сортируем буквы по алфавиту и пробегаемся по дереву — получится гораздо быстрее.
Во-вторых — берем словарь, сортируем буквы в каждом слове по алфавиту, строим дерево последовательностей, в распознаваемом слове также сортируем буквы по алфавиту и пробегаемся по дереву — получится гораздо быстрее.
Мне кажется, что надо ввести доп критерий — количество «правильно стоящих» букв в начале\конце.
Для слова < 7 символов это 1 (первая и последняя)
Для слова > 7 это 2 буквы.
+ запретить некоторые сочетания (например, когда я вижу БС в начале длинного слова, я впадаю в ступор и начинаю шепотом повторять «бс, бэс, бс, бз, бззз...»). Интересно, такой эффект наблюдается еще у кого то?
Для слова < 7 символов это 1 (первая и последняя)
Для слова > 7 это 2 буквы.
+ запретить некоторые сочетания (например, когда я вижу БС в начале длинного слова, я впадаю в ступор и начинаю шепотом повторять «бс, бэс, бс, бз, бззз...»). Интересно, такой эффект наблюдается еще у кого то?
Пнаацы, не кйчайте, там вриус, паваерешимеет бвукы!
Просто переставил внутренние буквы текста наоборот
> По раттаьлулезм ииндавоесслй огнодо агкосйгилно
прочитать практически не реально
А как вам слово — ржнлпсооаеы
Так что совсем без порядка не прочитать. В том тексте практически все гласные на своих местах, да и согласные не сильно смещены — поэтому читать не сложно.
> По раттаьлулезм ииндавоесслй огнодо агкосйгилно
прочитать практически не реально
А как вам слово — ржнлпсооаеы
Так что совсем без порядка не прочитать. В том тексте практически все гласные на своих местах, да и согласные не сильно смещены — поэтому читать не сложно.
Да, да тоже такая мысль пришла. В оригинале вообще слабо перемешано. В общем, британские ученые…
читать нужно текст, а не слова.
Читайте :)
По раттаьлулезм ииндавоесслй огнодо агкосйгилно утеситреивна порядок имеет зиечанне.
Если и можно здесь что-то прочитать, то надо повозиться и попереставлять буквы сначала.
И это я всего лишь переставил все буквы наоборот (вторую на предпоследнее место и тд..) от того, что предлагалось изначально. Я даже не подбирал ничего специально.
По раттаьлулезм ииндавоесслй огнодо агкосйгилно утеситреивна порядок имеет зиечанне.
Если и можно здесь что-то прочитать, то надо повозиться и попереставлять буквы сначала.
И это я всего лишь переставил все буквы наоборот (вторую на предпоследнее место и тд..) от того, что предлагалось изначально. Я даже не подбирал ничего специально.
Мне кажется что перемешивать надо не абы как, а менять местами рядом стоящие буквы, чтоб они не «убегали» далего. Если вторая буква вдруг окажется предпоследней, то шансы на прочтение существенно уменьшаются.
Может и так, но я руководствовался фразой из текста:
>в полном беспорядке
>в полном беспорядке
А мне кажется гораздо больше сбивает с толку мешанина, неожиданно похожая на нормальное слово (чередование гласных и согласных). Например во фразе «сосредоточиться на возможностях слуха» первые два слова я прочитал спокойно, а на третьем засыпался :) Потому что стал гадать, что это за сухло такое.
Мозг распознает образы методом сравнения с образцом, поэтому чем дальше уходят буквы от своих мест, тем сильнее искажения.
Возможности слуха тоже ограничены, мозг не может слышать «бесконечное число частот», так как сложный гармонический сигнал разлагается в спектр при помощи улитки, в которой есть мембраны разного размера. Каждая мембрана резонирует на определенной частоте, и амплитуда этой частотной составляющей определяется по интенсивности сигнала от связанных с этой мембраной рецепторов.
Возможности слуха тоже ограничены, мозг не может слышать «бесконечное число частот», так как сложный гармонический сигнал разлагается в спектр при помощи улитки, в которой есть мембраны разного размера. Каждая мембрана резонирует на определенной частоте, и амплитуда этой частотной составляющей определяется по интенсивности сигнала от связанных с этой мембраной рецепторов.
«Новость» с очень длинной бородой (уж не один год ей точно).
Чтобы понять, насколько это неправда делаем такой тест: вместо предложения пишем фанарную последовательность слов; буквы внутри слов перемешиваем таким образом, чтобы сначла шли гласные (в алфавитном порядке), а затем согласные. После чего пытаемся доказать, что способны прочесть эту лабуду.
Вот пример, который является последовательностью слов из двух вполне осмысленных фраз, после перестановки превращается в полнейшую абракадабру:
Причина узнавания проста. Когда мы пытаемся узнать что-либо, мы используем несколько путей поиска соответствий. Во-первых, мы воспринимаем семантику предложения, то есть пытаемся «прочесть быстро» — сиречь подобрать собственный смысловой эквивалент, который «автоматом» (через цепочки синонимов) даёт необходимое слово. Во-вторых, мы пытаемся узнать отдельные слова перебирая графические, фонетические и морфемные маски. В большинстве случаев (для слов длина которых более пяти букв) всегда можно подобрать такое расположение букв внутри слва, чтобы данное расположение не соответствовало ни одной из масок, то есть становилось бы неузнаваемым.
Текст опровержения нагло скопипащен отсюда.
Чтобы понять, насколько это неправда делаем такой тест: вместо предложения пишем фанарную последовательность слов; буквы внутри слов перемешиваем таким образом, чтобы сначла шли гласные (в алфавитном порядке), а затем согласные. После чего пытаемся доказать, что способны прочесть эту лабуду.
Вот пример, который является последовательностью слов из двух вполне осмысленных фраз, после перестановки превращается в полнейшую абракадабру:
мааееикмсттче иеиюклнсче раобты саоюявлстт эогто гаеииивдклрсче аоврта яюявлстя уойврсстта эееииодклнпцй аионнтчй паиодклнрй мааеикмтти
Причина узнавания проста. Когда мы пытаемся узнать что-либо, мы используем несколько путей поиска соответствий. Во-первых, мы воспринимаем семантику предложения, то есть пытаемся «прочесть быстро» — сиречь подобрать собственный смысловой эквивалент, который «автоматом» (через цепочки синонимов) даёт необходимое слово. Во-вторых, мы пытаемся узнать отдельные слова перебирая графические, фонетические и морфемные маски. В большинстве случаев (для слов длина которых более пяти букв) всегда можно подобрать такое расположение букв внутри слва, чтобы данное расположение не соответствовало ни одной из масок, то есть становилось бы неузнаваемым.
Текст опровержения нагло скопипащен отсюда.
Но с другой стороны ваш пример не являет собой случайное перемешивание букв, а имеет вполне конкретную последовательность(гласные-согласные), вероятность получения такого следования в случайном перемешивании очень мала и вряд ли может служить опровержением.
А я таки что-то прочитал :)
математические исключение? работы составляют этого … являются устройства энциклопедий античной … математики
Вообще удивительно, как же наш мозг умудряется вычленять информацию из такой каши
математические исключение? работы составляют этого … являются устройства энциклопедий античной … математики
Вообще удивительно, как же наш мозг умудряется вычленять информацию из такой каши
Оригинальный текст всё же читается проще. Заметил, что когда читаю тот текст глаза цепляются не только за конец и начало слова, но и за некоторые «опорные» точки — буквы в середине. Т.е. слово «илссеовадний» читается примерно как и-сс-ова-ний (что уже близко к нормальному варианту).
По сути, в искаженном слове буквы не уходят далеко от своих исходных позиций, что позволяет легче читать искаженные слова.
По сути, в искаженном слове буквы не уходят далеко от своих исходных позиций, что позволяет легче читать искаженные слова.
чуть меньше кода)
//import java.util.Collections;
//import java.util.ArrayList;
String text = "Практической пользы программа не несет, разве что прокачать навыки чтения и подгрузить мозг.";
final StringBuffer sb = new StringBuffer( text.length() );
Matcher m = Pattern.compile("[а-яА-Яa-zA-Z]{4,}").matcher(text);
while (m.find()) { // words
for(int g=0; g<=m.groupCount(); ++g) {
String wrd = m.group(g);
String wrd_new = wrd.substring(0,1);
char[] chars = wrd.substring(1, wrd.length()-1 ).toCharArray();
ArrayList<String> al = new ArrayList();
for(int i=0; i<chars.length; ++i)
al.add( String.valueOf(chars[i]) );
Collections.shuffle(al);
for(String tmp : al)
wrd_new += tmp;
wrd_new += wrd.substring(wrd.length()-1,wrd.length());
m.appendReplacement( sb, Matcher.quoteReplacement( wrd_new ) );
}
}
m.appendTail( sb );
System.out.println(sb);
Чуть меньше кода — 2:
# -*- coding: utf-8 -*-
import re, random
def _reword(m):
bits = list(m.group(0))
prefix, core, suffix = bits[:1], bits[1:-1], bits[-1:]
random.shuffle(core)
return ''.join(prefix + core + suffix)
def shuffle_text_letters(s):
return re.sub(u'[а-яА-Яa-zA-Z]{4,}', _reword, s)
print shuffle_text_letters(u"Практической пользы программа не несет, разве что прокачать навыки чтения и подгрузить мозг.")
чуть меньше кода — 3 :)
$text = "Практической пользы программа не несет, разве что прокачать навыки чтения и подгрузить мозг.";
$text = preg_replace_callback("/(?<=[а-я])[а-я]{2,}(?=[а-я])/iu", 'rndstr', $text);
function rndstr($matches) {
preg_match_all("/./u",$matches[0],$m);
shuffle($m[0]);
return join('',$m[0]);
}
echo $text;
Чуть меньше кода — 4: возвращение блудного верблюда
use utf8;
use List::Util 'shuffle';
$text = 'Практической пользы программа не несет, разве что прокачать навыки чтения и подгрузить мозг.';
$text =~ s/(?<=[а-яa-z])([а-яa-z]{2,})(?=[а-яa-z])/join('',shuffle(split('',$1)))/eg;
print "$text\n";
Автор, ты можешь объяснить, зачем постить такую элементарную ерунду на хабр? Давайте каждый хабровчанин будет сюда постить все программы сложнее хеллоу ворлда, которые он написал.
Объясняю, я нисколько не пытаюсь показать новый алгоритм, или сверхоптимизацию, или еще что-либо что является новым словом в программировании. Я реализовал очень старый и давно известный алгоритм просто ради интереса. И насчет данной темы, я уверен, не все люди в курсе, кому то вполне может быть интересно узнать и попробовать.
Посмотрите работы Сергея Михайлова (автора книги по скорочтению «Шаманство над книгой»). У него на сайте есть много на тему www.sm100.ru
В частности, его проект с перемешиванием букв http://www.dadon.ru/mik/mix_letters
По себе знаю — такие упражнения очень помогают повысить скорость чтения. Вот-бы кто-нибудь FBReader с такой фичей написал…
В частности, его проект с перемешиванием букв http://www.dadon.ru/mik/mix_letters
По себе знаю — такие упражнения очень помогают повысить скорость чтения. Вот-бы кто-нибудь FBReader с такой фичей написал…
Насколько я знаю fb2 формат является xml подобным, вполне можно попробовать сделать конвертер книг в перемешанное состояние.
Опять же, предлагаю автору задуматься над слогами. Вот слово из авторского текста «пноеедрлжпоии» мне в чтении далось сложнее всего)
Интересная мысль родилась: а если не просто случайно переставлять, а переставлять так, чтоб в результате при сжатии с помощью алгоритма Huffman-а выходили меньшие деревья?
Т.е. в простом варианте для каждого слова составить все возможные перестановки букв, и посмотреть какая из перестановок уже содержится в предполагаемом дереве.
Или построить дерево для исходного документа, потом пройтись по «листьям» и посмотреть не можем ли мы переставить что-то в каком-то из слов чтоб получился этот листик.
Или с помощью dynamic programming постепенно построить дерево+перестановки.
Мне кажется что будет оч-чень интересный результат в виде существенно большего коэффициента сжатия.
Фактически это будет JPEG для текста :)
Есть желающие попробовать? По идее не сложный алгоритм будет — чуть более сложнее задачка чем на CodeJam (вспомнилась задача прo «wellcome to code jam»).
Т.е. в простом варианте для каждого слова составить все возможные перестановки букв, и посмотреть какая из перестановок уже содержится в предполагаемом дереве.
Или построить дерево для исходного документа, потом пройтись по «листьям» и посмотреть не можем ли мы переставить что-то в каком-то из слов чтоб получился этот листик.
Или с помощью dynamic programming постепенно построить дерево+перестановки.
Мне кажется что будет оч-чень интересный результат в виде существенно большего коэффициента сжатия.
Фактически это будет JPEG для текста :)
Есть желающие попробовать? По идее не сложный алгоритм будет — чуть более сложнее задачка чем на CodeJam (вспомнилась задача прo «wellcome to code jam»).
Но что делать с коллизиями? Наверняка найдутся разные слова с одинаковым набором букв, у которых первая и последняя буквы также одинаковы(сходу не подобрал). Тогда однозначного декодирования получить не сможем. И выйдет как и в jpeg сжатие с потерями, что в случае с текстом нежелательно.
в том то и суть — ведь по «рзелульаттам илссеовадний» Вы не сразу отличите что в каком-то месте было другое слово и Ваш мозг «достроит» нужные перестановки в обоих случаях. Ведь задача не восстановить 1 в 1 оригинальный текст, а получить текст, который читается так же.
Именно за счет этой «фичи мозга» и можем получить сжатие большее, чем при обычном хуффмане :)
Думаю эксперимент стоит того, чтоб попробовать.
Именно за счет этой «фичи мозга» и можем получить сжатие большее, чем при обычном хуффмане :)
Думаю эксперимент стоит того, чтоб попробовать.
Глаз цепляется за гласные.
Посмотрите на исходный текст, практически все гласные на своих местах. Если они переставлены, узнать слово уже значительно труднее, особенно если это длинное слово. Так что простой микс — не подойдет.
Посмотрите на исходный текст, практически все гласные на своих местах. Если они переставлены, узнать слово уже значительно труднее, особенно если это длинное слово. Так что простой микс — не подойдет.
Не особо читаемо получается, кстати.
Назвать программу нужно было бы чем-то в духе: «Бумперекешовка» :-)
WHY C#?
на js же легко пишется, и не нужно обладать такой фигней как винда
на js же легко пишется, и не нужно обладать такой фигней как винда
Практической пользы программа не несет, разве что прокачать навыки чтения и подгрузить мозг.
А вот это Вы зря.
Подобной программой отучивал своего младшего брата читать по слогам.
Успешно. :)
То же самое коротко и на Haskell
import System.Random
blendText :: String -> IO String
blendText s = sequence ( map blendWord (words s) ) >>= return . unwords
blendWord :: String -> IO String
blendWord w = rearrange (( tail . init ) w) >>= \x -> return ([head w] ++ x ++ [last w])
rearrange :: [a] -> IO [a]
rearrange [] = return []
rearrange (x:xs) = getStdRandom (randomR (0, (length (x:xs)) - 1))
>>= \n -> sequence [rearrange (take n xs), return [x], rearrange (drop n xs)]
>>= return . concat
Главное первые слова дать нормально прочитать, дальше из контекста додумываешь.
Как-то раз в одном из обзоров у меня таким способом было написано пара абзацев — по-моему, даже никто не заметил этого )
Мне даже показалось, что исковерканный текст читается быстрее. Видимо потому что в этом случае слова про себя не проговариваешь.
Что? Здесь не было ещё ни одной шутки про британских учёных?
Если хорошенько приглядеться, то буквы в исходном примере (а так же в оригинале, на английском) расставлены не абы как, замес идет максимум в пределах трех символов. Именно поэтому сгенерированный текст куда сложнее для восприятия.
Было бы интересно сделать такой текст, который читался бы неправильно — т.е. состоящий из слов, значение которых можно было бы интерпретировать двояко после такой обработки.
Занимался этим вопросом, в реальности дело в сохранении распознавания корня. Я усовершенствовал немного алгоритм перемешивания для затруднения восприятия, а именно: буквы делятся на гласные и согласные и выстраиваются в обратном порядке, сначала гласные, потом — согласные. При этом первая и последняя буквы всегда остаются на месте. Читается хуже на два порядка.
Для примера абзац выше, переделанный по моему алгоритму:
Заиаслмня эитм вооосрпм, в роьаетснли дело в сиеаоннрхи риааоанвнзпся конря. Я уаоееоввтсншрвсл ноегнмо аиотрглм пиаиееенвшмря для зиеуанндртя вияиотрпся, а иеннмо: бувкы дяестля на гыансле и сыаонслге и вюаиаыствртся в ооантрбм пяокдре, саалчна сыаонслге, поотм — гыансле. При эотм паевря и пяеондлся бувкы ведгса оюасттся на метсе. Чеаисття хуже на два пяокдра.
Для примера абзац выше, переделанный по моему алгоритму:
Заиаслмня эитм вооосрпм, в роьаетснли дело в сиеаоннрхи риааоанвнзпся конря. Я уаоееоввтсншрвсл ноегнмо аиотрглм пиаиееенвшмря для зиеуанндртя вияиотрпся, а иеннмо: бувкы дяестля на гыансле и сыаонслге и вюаиаыствртся в ооантрбм пяокдре, саалчна сыаонслге, поотм — гыансле. При эотм паевря и пяеондлся бувкы ведгса оюасттся на метсе. Чеаисття хуже на два пяокдра.
Хехъ, давным давно писал такой скриптик для mirc32, который все что я писал преобразовывал согласно этому правилу. Те, кто со мной общались, очень скоро начинали возмущаться :)
Для более-менее комфортного чтения менять местами можно только соседние буквы исходного слова.
Недавно был на докладе по задачам автоматического распознавания искаженного текста. В частности обсуждали эффект Кембриджского университета. Вот пара ссылок по теме:
Обширное обсуждение феномена. В числе основных причин эффекта указывают автор указывает следующие:
1) Short words are easy — 2 or 3 letter words don't change at all.
2) Function words (the, be, and, you etc.) stay the same — mostly because they are short
3) Of the 15 words in this sentence, there are 8 that are still correct
4) Transpositions of adjacent letters (porbelm / problem) are easier to read
5) None of the words that have reordered letters create another word
6) Transpositions were used that preseve the sound of the original word
7) given the first few words of the sentence, you can guess what words are coming next
Тезисы PhD «The Significance of Letter Position in Word Recognition» (1976) — вероятно, первое исследование читабельности текстов с переставленными буквами. Кстати, никакой не Кембридж, а Ноттингем
Обширное обсуждение феномена. В числе основных причин эффекта указывают автор указывает следующие:
1) Short words are easy — 2 or 3 letter words don't change at all.
2) Function words (the, be, and, you etc.) stay the same — mostly because they are short
3) Of the 15 words in this sentence, there are 8 that are still correct
4) Transpositions of adjacent letters (porbelm / problem) are easier to read
5) None of the words that have reordered letters create another word
6) Transpositions were used that preseve the sound of the original word
7) given the first few words of the sentence, you can guess what words are coming next
Тезисы PhD «The Significance of Letter Position in Word Recognition» (1976) — вероятно, первое исследование читабельности текстов с переставленными буквами. Кстати, никакой не Кембридж, а Ноттингем
Спасибо большое, собрал для украинского языка, компилятором который идет в комплекте .Net Framework, =)
Кому надо, вот строка, запускать в каталоге с исходниками
Кому надо, вот строка, запускать в каталоге с исходниками
%WinDir%\Microsoft.NET\Framework\v4.0.30319\csc.exe /optimize /target:winexe *.cs
Может выложить исходники и бинарики на гитхаб?
Sign up to leave a comment.
Эффект Кембриджского университета