У каждого из нас есть какие-то неординарные достижения в программировании, которыми можно похвалиться и/или поудивлять других. Как-то так:
А я сделал <%что-то невероятное%>, вот такой я крутой программист!
Немного сути
Предлагаю делиться фактами, а если кому хочется — и техническими деталями реализации. Начну немного. Давно это было. Мне удалось в рамках одного процесса менять цветовую схему винды, 32-битная версия.
картинка
Я был ленивый и не запилил полноценную версию, да и под 64-битную винду тоже не сделал. А так же на неклиентскую область это не влияло, так это отдельная ипостась. Но в целом вышло удобно, когда у тебя несколько одинаковых приложений, и чтобы меж ними не путаться, можно слегка их подкрасить, как вот тут, но без фанатизма:
CEM>Предлагаю делиться фактами
Во времена, когда мониторы были 15 дюймов, я придумал, как увеличить видимую область: двигать все окошки вслед за мышью. Можно было замостить большую площадь разными приложениями.
При приближении курсора мыши к краю экрана, все окошки начинали съезжать в противоположную сторону.
Для плавной работы не хватало мощности пк, потому прыгало по 5 пикселей.
Любопытно, приходила ли такая "гениальная" идея еще кому-нибудь?
Здравствуйте, namespace, Вы писали:
N>Любопытно, приходила ли такая "гениальная" идея еще кому-нибудь?
Смутно припоминаю, что раньше в линуксе можно было поставить размер виртуального рабочего стола больше разрешения монитора и оно как-то так и работало.
Здравствуйте, CEMb, Вы писали:
CEM>Начну немного. Давно это было. Мне удалось в рамках одного процесса менять цветовую схему винды, 32-битная версия.
А я...
1) Сделал так, что цвет курсора меняется в зависимости от того, какая сейчас раскладка.
2) И по кнопке последние введённый кусок текста перекодируется рус-лат.
(Для Линукса, но какая разница).
Здравствуйте, vsb, Вы писали:
N>>Любопытно, приходила ли такая "гениальная" идея еще кому-нибудь? vsb>Смутно припоминаю, что раньше в линуксе можно было поставить размер виртуального рабочего стола больше разрешения монитора и оно как-то так и работало.
И в винде можно было, в районе 2000/XP, особенно популярно было на говноноутах типа Asus EEE PC.
Здравствуйте, CEMb, Вы писали:
CEM>Я был ленивый и не запилил полноценную версию, да и под 64-битную винду тоже не сделал. А так же на неклиентскую область это не влияло, так это отдельная ипостась. Но в целом вышло удобно, когда у тебя несколько одинаковых приложений, и чтобы меж ними не путаться, можно слегка их подкрасить, как вот тут, но без фанатизма: CEM>вот такой я крутой программист!
Ты не ленивый Когда мне захотелось такого, я порылся в gtk, сделал пару тем — и теперь у меня файрфоксы с разными рамками в зависимости от задач, но вот кода там ноль.
Что до программ, то после многих лет поисков приличного калькулятора я написал питоновый скрипт (и повесил на кнопку "calculator", пока её в федоре не сломали), который запускает gnome-terminal с самим же собой, определяет пару десятков функций чтоб парсить биты, переворачивать байты, импортирует пачку модулей, обёртки вокруг capstone (простенький дизассемблер) и остаётся в консольном режиме.
Здравствуйте, aik, Вы писали:
N>>>Любопытно, приходила ли такая "гениальная" идея еще кому-нибудь? vsb>>Смутно припоминаю, что раньше в линуксе можно было поставить размер виртуального рабочего стола больше разрешения монитора и оно как-то так и работало.
aik>И в винде можно было, в районе 2000/XP, особенно популярно было на говноноутах типа Asus EEE PC.
Вот, кстати, делал подобную программу для американских врачей. У них были мелкие ноуты, а софт был с большими окнами. Моя прога вытягивала активное окно из-за края экрана, если подвести мышь к краю экрана, за который это окно торчало. Врачи вышли на меня по ещё одной моей программе, которая тоже двигала окна.
Когда начал программировать, делал только полезные программы
1. Программа, которая заставляла окна убегать от курсора мыши
2. Программа, которая триггерилась случайно и со звуком взрыва проделывала дырку через все открытые окна вплоть до рабочего стола. Ещё рисовала кровищу поверх всех окон. Пользователь мог стереть кровищу, повозив окна туда сюда. От дырок было так просто не избавиться — это были регионы (HRGN) для окон.
3. Программа, которая находила процесс сапёра, глядела на него (делая скриншоты), и играла в него. Опционально, перестартовала игру при проигрыше. Таким образом у меня был рекорд 1 секунда на pentium 200. После апгрейда на какой-то селерон, программа стабильно побеждала за <1с — 0 секунд на таймере.
Здравствуйте, CEMb, Вы писали:
CEM>Предлагаю делиться фактами, а если кому хочется — и техническими деталями реализации.
Сохранял информацию о всех TCP/UDP сессиях на скорости 10 GB в кольцевом буфере размером 100 Гб, с моментальным поиском.
Под кольцевой буфер использовался PostgreSQL, порядка 250К insert'ов в секунду. Для commodity hardware/software 2009 года это было круто (ну или я так думал .
Здравствуйте, SuhanovSergey, Вы писали:
SS>2. Программа, которая триггерилась случайно и со звуком взрыва проделывала дырку через все открытые окна вплоть до рабочего стола. Ещё рисовала кровищу поверх всех окон. Пользователь мог стереть кровищу, повозив окна туда сюда. От дырок было так просто не избавиться — это были регионы (HRGN) для окон.
так ей же цены нет! как раз такую и надо мне подсунуть одному уж больно депрессивному челдобреку, который в трауре уже почти месяц по сдохшему коту
Когда я учился в восьмом классе, я внезапно понял принцип работы игр со световым пистолетом для денди.
Срочно захотел реализовать самостоятельно и реализовал: раздобыл ещё один пистолет для опытов, разобрал его, удалил плату и подключил фотодиод к гейм-порту школьного 386-го компа.
Программу написал на чем умел: на турбопаскале с ассемблерными вставками для опроса гейм-порта.
Получился тир: по экрану относительно хаотично перемещалась круглая мишень и меняла цвет при попадании.
Ещё, хоть и не про программирование, была история такая. У отца была подборка журналов «Радио» за 86-й год, в ней я нашёл и с интересом изучил описание RS-232. Оттуда я понял, как сделать нуль-модемный кабель из трёх длинных проводов марки МГТФ и разъёмов от сеговских геймпадов. Через этот кабель мы рубились в GTA на школьных компах (сети то ли не было, то ли не работала почему-то)
Null-modem кабель у меня тоже был.
Из забавных вещей из молодости:
Написал простенькую программку как вешать все компы подключенные к школьной сети (компы были древними Немигами, "сеть" вообще на каких то проводках, работала только внутри одного класса) кроме того, на котором запускалась программка.
Написал программку для копирования спектрумовского формата Леший, потому что лешевские оригинальные кассеты быстро заюзывались до состояния когда перематывать приходилось буквально каждые пару секунд загрузки.
Написал аналог Wolf3D под спектрум, чб но с текстурами. Тормозило просто атас.
Потом уже всё стало рутиной и такого восторга уже не вызывает.
Мой код работает в любой продукции Apple (iPhone, iPad, iPod и т д, когда вы слушаете музыку)
Мой код работает в Skype, когда вы говорите с видео.
Мой код работает в продукции многих производителей VoIP в мире.
Я уничтожил FMS и бизнес Adobe раскрыв секрет их протокола и аудио-кодирования дал целое направление телефонных звонков из бразуера до WebRTC.
Мой код обслуживает 50 млн звонков ежемесячно, на нем работают все банки (какие не скажу, NDA), многие IVR, когда вы говорите с роботом, некоторые приложения вызова такси (какие не скажу, NDA)...
Bjorn Skalpe:
BS>Мой код работает в любой продукции Apple (iPhone, iPad, iPod и т д, когда вы слушаете музыку) BS>Мой код работает в Skype, когда вы говорите с видео. BS>Мой код работает в продукции многих производителей VoIP в мире.
Надо еще послушать Ивана Первачёва.
Модератор-националист Kerk преследует оппонентов по политическим мотивам.
Здравствуйте, Skorodum, Вы писали:
S>Сохранял информацию о всех TCP/UDP сессиях на скорости 10 GB в кольцевом буфере размером 100 Гб
10 гбит ?
Сохранял информацию о сессиях, заголовках пакетов, или содержимом ?
На сессии черезчур много.
На содержимое пакетов — это всего 1,5 минуты, но самое главное — даже в RAW виде у тебя HDD не вывезет такую скорость. 1гбит на пределе, и то врядли для 2009 года. И распараллелить на много дисков особо не получится — контроллер не резиновый.
S>с моментальным поиском. S>Под кольцевой буфер использовался PostgreSQL,
А тем более если в БД сохранять.
S>порядка 250К insert'ов в секунду.
Без jumbo frames это 375 mb/sec. Явно побольше гигабита. (даже если допустить что БД волшебная и работает мгновенно всегда)
Значит содержимое пакетов ты не сохранял, только заголовки.
в каждом insert-e, надеюсь, была информация о пачке пакетов ? Иначе хрень же получается.
S>Для commodity hardware/software 2009 года это было круто (ну или я так думал .
Странная система, особенно в свете хранения в БД. И ПОИСКА.
Здравствуйте, CreatorCray, Вы писали:
CC>Написал программку для копирования спектрумовского формата Леший, потому что лешевские оригинальные кассеты быстро заюзывались до состояния когда перематывать приходилось буквально каждые пару секунд загрузки.
На спектруме написал ? В 90е ?
Потому что снять на PC со звуковухи и восстановить программкой на ЯВУ это ламерство.
Были и загрузчики со счётчиками, и рисовалки экрана бегающим курсором в процессе загрузки.
Но особую гордость у меня вызывает загрузка из произвольного места, без синхронизации.
Дело в том, что я в начале спектрумовского пути, нечаянно запорол картинку у своей любимой игры. Нажал REC прямо на пилот тоне, и стёр вторую половину пилота и даже маленький кусочек данных.
Очень хотел её восстановить, но знаний не хватало. А когда сумел — небольшим кусочком машкода проротировал биты и байты, чтобы восстановить смещение. А пропавшее дорисовал сам, в ART Studio.
CC>Написал аналог Wolf3D под спектрум, чб но с текстурами. Тормозило просто атас.
зацени скорость. И это на 48к. На 128к оно в разы быстрее.