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

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

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
Я каждый день делаю что-то красивое, интересное и занимательное... так как мало знаю, много учу...

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-10-04 07:59 am (UTC)
lxe: (Default)
From: [personal profile] lxe
Это запилишься - всю жизнь помнить об успехах.
С глаз долой - и т.п.

Хотя вот, да. Помнятся чужие достижения.
Один мой знакомый писал что-то такое на PHP:

$foo = (откуда-то он брал этот массив, неважно);
$balberg = $foo['balberg'];
$bromberg = $foo['bromberg'];
... // много
mysql_query("update dogwill ser balberg='$balberg', bromberg='$bromberg', ... where id=$id", $mysql);

Date: 2004-10-04 08:02 am (UTC)
lxe: (Default)
From: [personal profile] lxe
update ... set ..., конечно

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: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: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'

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 08:26 am (UTC)
From: [identity profile] cema.livejournal.com
Ты видел моего Хитроумного Одиссея?

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

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: 2004-10-04 08:42 am (UTC)
From: [identity profile] dimrub.livejournal.com
Классно, конечно, но какой же он хитроумный, если его все время за жопу цапают?

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 08:59 am (UTC)
From: [identity profile] yms.livejournal.com
do_magic (BSTR const text);

Так ведь это совсем не то. Требуется защитить от изменения содержимое *text, а не сам text. Именно что приходится отказываться от typedef BSTR.

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:03 am (UTC)
From: [identity profile] yms.livejournal.com
Это запилишься - всю жизнь помнить об успехах.
С глаз долой - и т.п.


А очень советую записывать где-нибудь в сторонке интересные случаи.
Если придётся менять работу, то для интервью очень пригодится.

Date: 2004-10-04 09:13 am (UTC)
From: [identity profile] shtraz.livejournal.com
А я считаю, что это никакое не красивое решение, и не хитрый/интересный баг, а наоборот следствие страшной убогости в майкросовтовских системах с бесконечными псевдонимами. Слои typedef, макросов и пр переобъявлений, когда через несколько вложенный h-файлов выяснится что это простой какой-нибудь char*! Хосспди, как же они меня бесят! Но, что делать? приходится мириться. Похоже альтернативы нет. (с каким же удовольствием я пишу дома небольшие програмки на C#, Вы бы знали! Но пока об этом серьезно говорить, все же рано, наверное) "Мыши ругались, плевались, но продолжали жрать кактус".

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

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 09:58 pm
Powered by Dreamwidth Studios