avva: (Default)
[personal profile] avva
У меня есть вопрос к программистам (и, шире, компьютерщикам). Расскажите о чём-нибудь особенно красивом/интересном/занимательном в вашей работе в последнее время. Например, какое-нибудь неожиданное архитектурное решение, или красивый в своей сложности баг, который удалось поймать, или красивая и эффективная оптимизация. А может, вы изучали какой-нибудь редкий и интересный язык, или нашли особую редкую красоту в известной всем системе. Короче говоря, было ли что-то неординарное в вашей работе в последнее время, о чём приятно вспомнить? Лучше всего в вашей лично, но если было что-то очень красивое, что просто встретилось/прочиталось, тоже можно рассказать.

Мной движет исключительно любопытство. Интересно узнать, чем таким хорошим люди занимаются.
Page 1 of 3 << [1] [2] [3] >>

Date: 2004-10-04 07:33 am (UTC)
lxe: (Default)
From: [personal profile] lxe
Было, но не запомнилось.

Date: 2004-10-04 07:34 am (UTC)
From: [identity profile] gone-gone.livejournal.com
Не может такого быть... значит не так замечательно было...

(no subject)

From: [personal profile] lxe - Date: 2004-10-04 07:59 am (UTC) - Expand

(no subject)

From: [personal profile] lxe - Date: 2004-10-04 08:02 am (UTC) - Expand

(no subject)

From: [identity profile] yms.livejournal.com - Date: 2004-10-04 09:03 am (UTC) - Expand

(no subject)

From: [personal profile] lxe - Date: 2004-10-04 09:55 am (UTC) - Expand

Date: 2004-10-04 07:34 am (UTC)
From: [identity profile] gone-gone.livejournal.com
Я каждый день делаю что-то красивое, интересное и занимательное... так как мало знаю, много учу...

Date: 2004-10-04 07:36 am (UTC)
From: [identity profile] uniqs.livejournal.com
Вот баг, может и не очень красивый, зато смешной.
http://www.livejournal.com/users/uniqs/10520.html?mode=reply

Date: 2004-10-04 07:49 am (UTC)
From: [identity profile] fiorine.livejournal.com
Я работаю тест-инженером в программерской конторе. Выпускаем мы продуктик типа менеджера workflow для полиграфии.
Прикрутили девелоперы наши могучие недавно поддержку Adobe InDesign'овских документов по просьба злопастных кастомеров. Выглядело это следующим образом: поднимается индизайн процессом на бэкграунде, открывает искомый документ и экспортит в PDF - привычный формат для нашего аппликэйшна. Вот такое мелкое читерство. Ну, QA в нашем лице горестно повздыхал на предмет неистребимой лени у программистов и махнул рукой.
А нет.
Спустя пару недель приходит письмо от клиента в том смысле, что, мол, не работает ничего. Рылись-рылись, дебажили, логи читали - ни черта не ясно.
В конце концов, решили, что файл какой-то битый попался. Скачали себе, протестили - снова ничего. Ну делать нечего - последний вариант оставался. Зашли remote access'ом к клиенту, решили попробовать у него на системе ручками сэкспортить подлый файл. Запускаем InDesign... а он, зараза, просто-напросто предлагает себя проапгрейдить и, посему, пока "Ок" или "Cancel" не тыцнешь - процесс будет стоять.
Занавес.
Матерились долго.

Date: 2004-11-05 05:53 pm (UTC)
From: [identity profile] kinst.livejournal.com
слушайте, как интересно? а как называется ваша система и какая компания ее выпускает?

(no subject)

From: [identity profile] fiorine.livejournal.com - Date: 2004-11-08 08:42 am (UTC) - Expand

(no subject)

From: [identity profile] kinst.livejournal.com - Date: 2004-11-08 10:48 am (UTC) - Expand

(no subject)

From: [identity profile] fiorine.livejournal.com - Date: 2004-11-08 11:04 am (UTC) - Expand

Date: 2004-10-04 08:05 am (UTC)
From: [identity profile] aldr.livejournal.com
В С++ есть достаточно неочевидный момент, состоящий в том, что указателей фиксирует указуемый тип и как бы "защищает" его от действия последующих модификаторов типа .

Например, стандартная (в Windows) декларация "" объявляет как указатель на неконстантные символы. Тем не менее, в коде иногда приходится встречать (http://www.google.com/search?ie=UTF-8&oe=UTF-8&hl=ru&q=%22const+BSTR%22) функции вида "", где намерением программиста явно было предотвратить модификацию передаваемой строки (как если бы действовало определение ""), в то время как на самом деле такое выражение объявляет константным не указуемые данные, а лишь сам передаваемый указатель, что в данном случае имеет очень мало смысла.

Иногда в связи с этим могут возникать трудноуловимые баги.

Date: 2004-10-04 08:20 am (UTC)
From: (Anonymous)
Пишите и разбирайте типы с права на лево а не с лева на право:

typedef OLECHAR* BSTR;

do_magic (BSTR const text);

do_magic (OLECHAR* const text);

do_magic (OLECHAR const* const text);

text is of type (с права на лево) 'const pointer-to const OLECHAR'

(no subject)

From: [identity profile] yms.livejournal.com - Date: 2004-10-04 08:59 am (UTC) - Expand

(no subject)

From: [identity profile] aldr.livejournal.com - Date: 2004-10-05 12:22 am (UTC) - Expand

(no subject)

From: [identity profile] shtraz.livejournal.com - Date: 2004-10-04 09:13 am (UTC) - Expand

(no subject)

From: [identity profile] dimrub.livejournal.com - Date: 2004-10-04 09:23 am (UTC) - Expand

(no subject)

From: [identity profile] aldr.livejournal.com - Date: 2004-10-05 12:27 am (UTC) - Expand

(no subject)

From: [identity profile] rahoolio.livejournal.com - Date: 2004-10-04 11:48 am (UTC) - Expand

(no subject)

From: [identity profile] aldr.livejournal.com - Date: 2004-10-05 12:31 am (UTC) - Expand

Date: 2004-10-04 08:17 am (UTC)
From: [identity profile] yms.livejournal.com
Шибко запомнился один случай с прошлой работы (дело было года три назад). Инсталлятор нашей системы упорно не хотел обновлять при апгрейде версии парочку файлов .js. В принципе Windows Installer для файлов, не помеченных версией (как version resource в dll) проверяет дату создания и модификации. Если дата модификации позже даты создания - значит, юзер менял файл, и его перезаписывать нельзя. Оказалось, что для этих файликов так и случалось. А юзер клялся, что он их не трогал, хотя присланный вывод dir говорил, что да, дата модификации новее.
Оказалось вот что: между инсталляциями юзеру присылался патч, который копировал новые файлы к нему на диск. Простой .bat с командой copy. Новые файлики .js копировались поверх старых. Ничего особенного, правда? Только вот NTFS (да-да, сам драйвер файловой системы) при перезаписывании файла сохраняет дату создания и доступа от прежнего файла, а вот дату модификации берёт от нового. Если старый файл сначала стереть, а потом записать новый - ничего не поможет, даты файла, который там был, восстанут из пепла! Только через сколько-то секунд эта информация "забывается". И это не баг, а фича, называемая tunneling, регулируется она через реестр и сделана для совместимости с MS-DOS. Так и поныне, вон на XP только что проверил.

Date: 2004-10-04 08:20 am (UTC)
From: [identity profile] prince-felix.livejournal.com
Нашёл симулятор исторического железа типа PDP: http://simh.trailing-edge.com/
Поставил UNIX V7 и радовался около часа. Только работает медленно.

Date: 2004-10-04 08:24 am (UTC)
From: [identity profile] jsn.livejournal.com
сыграл в перлгольф (http://www.kernelpanic.pl/perlgolf-view.mx?id=41 , там внизу по-английски), выиграл на тай-брейке. офигительные ощущения.

Date: 2004-10-04 09:16 am (UTC)
From: [identity profile] b-a-t.livejournal.com
Добил-таки? Ай, молодец, горд за тебя!

Date: 2004-10-04 08:26 am (UTC)
From: [identity profile] cema.livejournal.com
Ты видел моего Хитроумного Одиссея?

Date: 2004-10-04 08:28 am (UTC)
From: [identity profile] avva.livejournal.com
Ага, хороший!

(no subject)

From: [identity profile] cema.livejournal.com - Date: 2004-10-04 10:03 am (UTC) - Expand

(no subject)

From: [identity profile] dimrub.livejournal.com - Date: 2004-10-04 08:42 am (UTC) - Expand

(no subject)

From: [identity profile] evr.livejournal.com - Date: 2004-10-04 09:30 am (UTC) - Expand

(no subject)

From: [identity profile] cema.livejournal.com - Date: 2004-10-04 10:03 am (UTC) - Expand

c++ meta-programming

Date: 2004-10-04 08:29 am (UTC)
From: (Anonymous)
Например вот это:

#include <iostream>

using std::cerr;
using std::endl;

struct two_char
{
  char a[2];
};

template <typename t, t* (t::*f) () const = &t::clone>
struct helper_clone;

template <typename t>
char test_clone (helper_clone<t>*);

template <typename>
two_char test_clone (...);


struct a
{
  a*
  clone () const;
};

struct b
{

private:
  b (b const&);
};

int
main ()
{
  cerr << sizeof (test_clone<a> (0)) << endl;
  cerr << sizeof (test_clone<b> (0)) << endl;
}

Date: 2004-10-04 08:40 am (UTC)
From: [identity profile] dimrub.livejournal.com
Проверка файрвола - очень прикольная вещь. Бывают весьма зубодробительные случаи, фиг разберешься, кто к кому и зачем обращается.

Еще тут недавно попросили на некий баг посмотреть в SQL query. Гляжу - а там что-то типа вот этого:

...WHERE (Field_A = X and Field_B = Y or Field_B = Z)

Жалуются, мол, много лишних строчек выдает.

Date: 2005-02-05 03:00 am (UTC)
From: [identity profile] syarzhuk.livejournal.com
А теперь представь - у нас был продукт для юристов, где 50% того, что они делали - это искали текст. Чуть ли не половина баг-репортов была вот такого типа :)
В итоге я плюнул на всё и вставил в наш Query Builder принудительные скобки

(no subject)

From: [identity profile] dimrub.livejournal.com - Date: 2005-02-05 11:56 am (UTC) - Expand

Date: 2004-10-04 08:46 am (UTC)
From: [identity profile] gholam.livejournal.com
Выловил забавный вирус. Windows 98, система абсолютно чистая, в реестре всё как надо, win.ini и system.ini нетронутые, но shell не грузится, хоть тресни. Переустановка (без форматирования) не помогает, форматировать нельзя.

Оказалось, файл explorer.exe в корне системного раздела. Так как указание загрузки shell идёт просто как explorer.exe а не %windir%\explorer.exe, то поиск идёт по path, и мусорный файл всплывает первым.

Повбывав бы.

Date: 2004-10-04 08:54 am (UTC)
From: [identity profile] meshko.livejournal.com
Вот баг, который меня слегка порадовал и который можно в двух словах описать.
Продукт использует SysV семафоры. Собсвтенно даже не семафоры, а мьютексы, но они сделаны на семафорах. Всё это обёрнуто в нашу библиотеку. Библиотека устроена так, что если просят запереть мьютекс, которого ещё нет, он молча создается и запирается. В продукте есть несколько постоянно запущенных демонов, но иногда запускаются ещё всякие вспомогательные процессы. Обычно всё работало, но иногда мьютекс оказывался заперт, всё на нём останавливались и никто не отпускал. Оказалось, что мьютекс этот создавался в запертов состоянии с флагом SEM_UNDO, поэтому если карты ложились так, что создавался этот мьютекс вспомогательным процессом, то по завершении этого процесса он восстанавливался в исходное состояние, т.е. запертое.

Date: 2004-10-04 08:56 am (UTC)
From: [identity profile] cmhungry.livejournal.com
Навеска проверки заполненности полей на уже некую веб-страницу. При этом неясно, сколько будет полей, какие они будут, есть только код функции, которая выводит это поле, а их много будет, причем разного типа и т.п.
Известно название формы, название выводимого поля и будет ли это поле обязательным для заполнения. И завязка обработчиков onsubmit, когда каждое новое выводимое поле добавляет js на проверку заполненности, потом вызывает более ранний onsubmit.

Или вот связка одного объекта с многими другими, расположенными в иерархической структуре. Отдельное окошко с деревом объектов и галочками, вывод дерева по заданному количеству уровней, с нужным рутом, с удалением ненужных веток, ходим, ходим, галочки ставим. Потом кнопку жмем - и все связи добавляются одномоментно.
Засада была, в основном, в снятии галочек. Т.е. отследить момент "тут была галочка", поэтому связь надо удалить, "а тут галочка была и тут и осталась", так что тут ничего делать не надо.

Еще - установка windowsupdate сервера под Unix'ом. Правда, скрипты не мои, но в итоге красиво работает.

Глюк сети - аська работает, осел работает, а из сайтов - только яндекс и гугль. Оказалось, кривая карточка с впнами, не держит мту 1500.

Date: 2004-10-04 09:01 am (UTC)
From: [identity profile] le-shiy.livejournal.com
А меня поразил Chaoscope - http://www.livejournal.com/community/light_mk2/94471.html?mode=reply

Date: 2004-10-04 09:17 am (UTC)
From: [identity profile] bodun.livejournal.com
наткнулся на процедуру с 33 in и 2 out параметрами

Date: 2004-10-04 09:24 am (UTC)
From: [identity profile] shtraz.livejournal.com
Ну и я тоже не удержался:
1. Вот я постил у себя (http://www.livejournal.com/~shtraz/45526.html?mode=reply) недавно, там просто интересный думаю и для Вас как для апологета перла факт.
2. Знаю Ваши напряженные отношения с С++, однако, все же напишу и о нем: изучаю сейчас (как и аноним выше, интересное совпадение) метапрограммирование: книга Александреску "Современное проектирование на С++", Boost.MPL, Boost.type_traits - и прихожу в полнейший восторг! Надеюсь когда-нибудь эта техника доберется до _реальных_ приложений, а не умрет теорией. В любом случае что-то подобное, может быть даже более развитое, будет необходимо в будущем. Но, как минимум, Александреску творит чудеса! Да и эти библиотеки из Boost - примеры отличного программирования на С++. Boost вобще очень сильно меняет взгляд на С++ - попробуйте, вдруг Вам понравится?

Date: 2004-10-04 12:27 pm (UTC)
From: (Anonymous)
Я не изучаю, я так prior art столблю ;-)

Date: 2004-10-04 09:29 am (UTC)
From: [identity profile] onodera.livejournal.com
Поковырял язык J, наследник APL. Массивно-ориентированный язык. Видели Си? Совсем непохоже. Ощущения — как от первого урока немецкого: ничего не знаешь, не понимаешь, хотя не дурак.

Date: 2004-10-04 09:40 am (UTC)
From: [identity profile] ohw.livejournal.com
открыл для себя scheme (http://www.livejournal.com/~ohw/11794.html?mode=reply)

haskell

Date: 2004-10-04 10:06 am (UTC)
From: [identity profile] notbrainsurgery.livejournal.com
Изучал недавно Haskell. Там много красиового. Например мне очень нравится функция
repeat которая берет элемент и возвращает массив таких элементов бесконечной длины. Для C программиста это на первый взгляд может показаться дико - как можно возвращать массив БЕСКОНЕЧНОЙ длины?! А вот в Haskell можно, потому что
там lazy evaluation и элементы массива вычисляются по мере обращения к ним.

Re: haskell

Date: 2004-10-04 03:24 pm (UTC)
From: [identity profile] 12diozihcs.livejournal.com
В микрософте тоже Haskell изучали и доизучались: (http://research.microsoft.com/Comega/doc/comega_whatis.htm) ;)

Re: haskell

From: [identity profile] notbrainsurgery.livejournal.com - Date: 2004-10-04 08:24 pm (UTC) - Expand

big deal, infinity...

From: [identity profile] ivan-gandhi.livejournal.com - Date: 2004-10-04 07:36 pm (UTC) - Expand

Re: big deal, infinity...

From: [identity profile] notbrainsurgery.livejournal.com - Date: 2004-10-04 08:05 pm (UTC) - Expand

Re: haskell

From: [identity profile] amirul.livejournal.com - Date: 2004-10-05 02:22 am (UTC) - Expand

Date: 2004-10-04 10:21 am (UTC)
From: [identity profile] object.livejournal.com
Это было не совсем уж в последнее время, но очень запомнилось. Написал как-то OLE DB provider для базы данных под Windows CE. Вообще оказалось увлекательным занятием - построить решение так, чтобы заработали несколько десятков заранее заданных интерфейсов. Спортивный интерес подогревался наличием тестовых утилит от Microsoft, которые проверяли OLE DB conformance. Всего около 3000 тестов. Повозишься - две тысячи прошел, еще потратишь несколько дней - 2300.

Пожалуй, был один самых увлекательных периодов в моей программистской жизни.

ActiveX на .NET

Date: 2004-10-04 10:35 am (UTC)
andrzejn: (Default)
From: [personal profile] andrzejn
Сегодня удалось написать на VB.NET свой первый визуальный ActiveX-контрол, который вставился в форму Infopath и заработал там. Сложнее всего оказалось слепить из примеров на C# и VB 6.0 реализацию интерфейса IObjectSecurity.

Date: 2004-10-04 11:28 am (UTC)
From: [identity profile] ex-ilyavinar899.livejournal.com
Рассказать про баг, который подвесил основной сайт Амазона на 40 минут?

Date: 2004-10-04 12:36 pm (UTC)
From: [identity profile] avva.livejournal.com
Давай, если у тебя не будет из-за этого неприятностей.

(no subject)

From: [identity profile] ex-ilyavinar899.livejournal.com - Date: 2004-10-04 05:56 pm (UTC) - Expand

(no subject)

From: [identity profile] vyhuhol.livejournal.com - Date: 2004-10-05 06:12 am (UTC) - Expand

(no subject)

From: [identity profile] ex-ilyavinar899.livejournal.com - Date: 2004-10-05 07:36 am (UTC) - Expand

(no subject)

From: [identity profile] vyhuhol.livejournal.com - Date: 2004-10-05 08:07 am (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2004-10-05 08:21 am (UTC) - Expand

(no subject)

From: [identity profile] dmarck.livejournal.com - Date: 2004-10-05 11:20 pm (UTC) - Expand

Date: 2004-10-04 11:37 am (UTC)
From: [identity profile] penguinny.livejournal.com
Не совсем свежее, но всё же: придумал грязнейший хак, склоняющий по-русски кол-во комментариев в ЖЖ используя CSS (для бесплатных журналов с состемой стилей S1). Пишется код вроде:


Поступил %%messagecount%% комментарий
Поступилo %%messagecount%% комментария


и используется совместно со стилем, который разбирает частные случае на следующий манер:

.R_1 .two { display: none }
.R_2 .one { display: none }

По-моему, довольно забавно. Создатели CSS за такие дела убили бы. Создатели ЖЖ, боюсь, тоже :)

Date: 2004-10-04 04:08 pm (UTC)
From: [identity profile] penguinny.livejournal.com
Да уж, а код-то съелся! Попробую подоходчивее:

<span class="R_%%messagecount%%">
<span class="one">Поступил %%messagecount%% комментарий</span>
<span class="two">Поступилo %%messagecount%% комментария</span>
</span>

Ну, и стилевой файл - как приведённый выше.

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2004-10-04 05:34 pm (UTC) - Expand
Page 1 of 3 << [1] [2] [3] >>

February 2026

S M T W T F S
1 2 3 4 5 67
8 9 10111213 14
15 16 17 18192021
2223 2425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 24th, 2026 10:17 am
Powered by Dreamwidth Studios