Журнал Пушыстого
[Most Recent Entries]
[Calendar View]
[Friends]
Below are the 20 most recent journal entries recorded in
Пушыстый's LiveJournal:
[ << Previous 20 ]
| Friday, October 10th, 2008 | | 2:31 pm |
| |
| | Wednesday, October 8th, 2008 | | 3:52 pm |
"SELECT * FROM mytable WHERE I'M FEELING LUCKY" | | 2:03 pm |
Осень... Красивая тёплая рыжая осень... | | Sunday, October 5th, 2008 | | 4:22 pm |
ZDXT. Провёл эксперимент, насколько лучше жмётся zlib-ом DXT1 из DDS, если разделить цвета от индексов. Получилось, что лучше на 10%, мне такое не очень интересно (надо писать быстрый код на C, причем допонительно для DXT2-5, и очень подробно разбираться с сюрфейсами и заголовком внутри DDS). Если у кого-то это -10% времени чтения с DVD и типа очень важно, то вот быстронаписаный говноскрипт который проводит подсчёты. Вообще на моих тестовых картинках zlib уменьшает размер DXT1 в полтора раза, вот это несложно и представляет интерес. | | Wednesday, October 1st, 2008 | | 11:17 am |
Когда GUI - это хорошо:
1) слайдеры/ползунки 2) выбор цвета 3) рисование и моделирование, просмотр частот звука (скроллинг, зум, режимы), ....
Для комбобоксов, edit-боксов, radio-buttons, tree view - GUI это зло. Добавление галочки превращается в борьбу с GUI-фреймворком и с дизайном (в обоих смыслах, и с дизайном кода, и с подгоном положения кнопочек).
Используя текстовые файлы там где можно обойтись (удобным, не обязательно xml) текстом, получаем забесплатно: undo, redo, save, load, внятный diff, copy - paste (и копирование из прототипа), search и replace, букмарки, дешёвое изменение структуры формата и добавление новых фичей ...
Последнего пункта увы нет вообще в схеме "GUI над сериализованым XML". Остальное - как повезёт. Может будет удобно влезть в сейв текстовым редактором, а может нет.
Хочется: текст + интерактивная подсказка/автокомплит (что бы не лазить в документацию за списком элементов "комбобокса") + хитрые элеметы прямо в тексте для управления тем, что в тексте редактировать неудобно (цвет и тп). + интерактивное превью результата. То есть, GUI используется только там, где оно по делу.
Пост родился после борьбы с .NET-ным Property Grid, который якобы на автомате умеет рожать GUI для произвольной структуры в коде. Враньё. После обучения и получения опыта - получаем полуавтомат, и всё равно неудобный. Если вы имели дело с настройкой десятка проектов в .sln из VS, у вас не было ощущения что вы делаете какие-то лишние движения мышкой? | | Tuesday, September 30th, 2008 | | 9:01 pm |
Пришла мысль: когда преподаватели программирования в вузах (не)замечают списывание программ - это на самом деле обучение скиллу нарушения GPL-лицензий и проприетарных NDA. | | Monday, September 22nd, 2008 | | 1:04 am |
Есть у меня старый IDE винт, по каким-то причинам Убунта/Debian его не могут опознать, подвисают при загрузке. Забавно, что будучи запущенными в виртуальной машине под Windows, они легко живут на этом же физическом жестком диске, в файле host OS. Есть статья у Спольски, про " протечки абстракций". Тут как-то наоборот - "абстракции-герметики". | | Friday, September 19th, 2008 | | 10:11 pm |
Програмисты (или менеджеры-заказчики) системы заказов в утконосе идиоты дважды Идиотизм 1: Продукты на online!-сайте нельзя заказать после 23.00. Не, понятно что им надо взять всякое на складах до определённого момента. Но они ж сделали так, что покупатели не могут заказать и запомнить на сайте свой заказ. Идиотизм 2: время на сайте берётся локальное, на моём компьютере. Как в случае если оно спешит, так и в случае если оно отстаёт - возможны неприятные ошибки. В первом случае - локально джава-скрипт показывает, что заказать уже нельзя, во втором случае - думаешь что успел, но сервер отказал. Ну и по мелочи - продукты в длинных чеках видимо сортируются по хеш-функции или указателям, а не по алфавиту/цене или ещё по чему-то такому, по чему можно ориентироваться. | | Thursday, September 11th, 2008 | | 10:06 pm |
... crash-course in PowerPC assembler ... | | Wednesday, September 10th, 2008 | | 2:37 pm |
if {}{}{}{}{} ИМХО по стилю кодирования: вместо того что бы насаждать обязательное использование фигурных скобок в if { } else { } даже если в ветвлениях только одна инструкция - лучше делать так, что бы почти всегда фигурные скобки были не нужны. То есть, вместо
if (...)
{
простыня_кода1
}
else
{
простыня_кода2
}
стараться писать
if (...)
do_something1();
else
do_something2();
Всякие "а мы захотим ещё добавить команду" - а добавляйте в do_something ;) Мысль написать об этом возникла когда увидел в семпле вот такое - ( Read more... )Увы, понимаю, что когда руководишь командой из нескольких программистов - часто лучше насаждать более надёжное, чем более приятное... интересно, сколько людей сейчас кинется комментировать "надо писать на языке без фигурных скобок" | | Monday, September 8th, 2008 | | 6:47 pm |
Wiiiiii ! Сейчас на новом месте работы кодаю под игровую приставку Wii. Я довольно давно тусовался на irc рядом с "приставочными" ребятами, поэтому поводы для удивления возникают редко, но, несмотря на это, испытал два культурных шока. 1) Смотрю в код. Вижу, при старте игры загружается из файла текстурка. Ну, ok. Но! На каждом кадре! Она "загружается" из обычной void* памяти в видеокарту. Потом пришло осознание, что загрузки нет, просто "обычная" и видео-память совмещены. А "установка" текстуры - это не протаскивание через графический API и AGP массива данных, а просто установка регистра. В дальнейшем уже чуть меньше удивил тот факт, что перед загрузкой текстуры если не сбросить кеш основного процессора, то видеопроцессор не увидит кусков текстуры. 2) Добавил в проект библиотеку. Вызвал функцию инициализации. Начало падать при старте. До моего кода. Оказалось, эта библиотека чуть-чуть увеличила размер executable-файла, ровно настолько, что бы не хватило памяти при инициализации memmanager. Писишники бы офигели. PS. А ещё тут со мной работает Алёна C++ ^^' | | Thursday, August 28th, 2008 | | 11:24 pm |
http://faceted-jacinth.livejournal.com/Про людей, программирование, математику, философию, лытрдыбр в очень интересной смеси %) Как жалко что сегодня не успею всё прочитать :) «Кстати, эта теория возникла из любопытного мысленного эксперимента: возьмём две точных копии меня и засунем в падающий самолёт, положив между ними единственный парашют. Подерутся, сцуки, потому что их матрицы выгодности неравны (хоть и эквивалентны относительно симметричной перестановки строк и столбцов)». | | Wednesday, August 20th, 2008 | | 4:21 pm |
меньше сравнений! Если пишете какой-то свой часто вызывающийся operator[] у самописного контейнера, то имеет смысл упростить в нём проверку границ: Было скажем вот так:
T &operator()(int x, int y)
{
assert(x >= 0 && x < m_Width && y >= 0 && y < m_Height);
return m_pData[y*m_Width + x];
}
А можно вот так:
T &operator()(int x, int y)
{
assert((unsigned)x < (unsigned)m_Width && (unsigned)y < (unsigned)m_Height);
return m_pData[y*m_Width + x];
}
Можно сразу писать unsigned/size_t в параметрах функции, но часто это невозможно из-за предупреждений компилятора или по историческим причинам и правилам перегрузки функций. Спорить "это неочевидно/тебе разве важна скорость в дебаге" не надо, возражения на возражения на возражения и случаи когда необходимо/вредно придумайте сами. Противоположное, "Это же баян и очевидно" - увы, не для всех. | | Saturday, August 16th, 2008 | | 2:20 am |
История: автоматика vs ручной труд. Помню надо было где-то в двадцати файлах сделать замену в каждом в трёх-пяти местах по тексту из других файлов (по файлам из переводчика).
Я начал писать скрипт, на что начальник заявил "не занимайся ****ёй, я руками быстрей сделаю".
Результаты: 1) мы кончили одновременно (за десять минут) 2) сравнение результатов показало, что у нас у обоих ошибки. У меня (в скрипте) молчаливо сломалось из-за переноса строки в неправильном месте в файле от переводчика, у него - случайная копипаст ошибка. | | Friday, August 15th, 2008 | | 1:50 am |
Разделение функций Придумал рульную вещь: MicroSD-карточка со встроенным bluetooth. Тогда можно было выбросить кучу проводов даже для уже существующих гаджетов (мобильники, фотоаппараты и тп). И появилось бы много новых интересных и простых способов работы с ними, дав автоматическую "беспроводность" всем аппаратам с SD-карточками.
Ых, жалко пока такого нет. | | Thursday, August 14th, 2008 | | 3:20 pm |
Используем боевую девелоперскую технику в мирной жизни Кодирование музыки чо-то тормозит. А у меня - четырёх-ядерный процессор. Не беда, пишем Makefile:
WAVFILES := $(wildcard *.wav)
OGGFILES := $(WAVFILES:.wav=.ogg)
all: $(OGGFILES)
%.ogg: %.wav
oggenc -Q --quality 5 "$^"
запускаем make -j 4 и всё ускоряется. ЗЫ. Увы, юникодные имена с пробелами и кавычками сломали всю малину, и сделали всё некрасивым, поверх make пришлось навернуть мощную переназывалку файлов. Наверное, если руками распараллелить import threading+import Queue, то было бы не особо длинней, а может даже короче. http://www.everfall.com/paste/id.php?vt15nmmfhtpp | | Wednesday, August 13th, 2008 | | 6:34 am |
cuesplit.py Сильно проапргрейдил вчерашний вариант скрипта, который по cue распиливает на wav. Брать здесь.Теперь он пытается по умолчанию всякое угадывать, подсказывать, и позволять задавать из командной строки. Увы, случайный виндовый пользователь скорее всего не будет иметь в %PATH% sox. Можно подложить его и прямо рядом со скриптом, берётся он с http://sox.sourceforge.netЕсли надо распилить APE или TTA файл - то скрипт намекнёт что хорошо бы иметь MonkeyAudio или mplayer соответственно, либо самому создать wav и указать его. flac кушается без проблем при помощи sox в одиночку. updated:Похоже, уже есть бесплатная гламурная тулза под винду. Ух, почему же я на неё позавчера не наткнулся. Medieval CUE Splitter. А вот ещё пачка тулзов для работы со звуком, на все случаи жизни: http://websound.ru/soft-utils_r.htm | | Tuesday, August 12th, 2008 | | 4:11 pm |
парсинг образов cd-музыки в cue Написал глупый скрипт расщепления музыки в cue+образ CD на питоне, вдруг кому-то ещё пригодится как основа для своих потребностей. На входе - out.wav, на выходе - пачка треков в wav, для вытаскивания используется sox. Мой cue был в непотребной кодировке, поэтому сохраняется в 00.wav, 01.wav и тд. Вам вполне возможно будет удобней добавить в скрипт также вытаскивание имён треков. Или тут же на месте - пережатие в ogg/flac/mp3 без временных файлов. Или вытаскивание имени образа CD прямо из CUE и автоматизация распаковки/оптимизация временных файлов. И тп, и тд. http://www.everfall.com/paste/id.php?84f1fykdb1qiДо конвертации - надо всякие образ CD ape, tta, flac превратить в wav, после - отдельные треки в mp3, ogg (использую для себя), flac. Как в aac (.m4a) - не знаю, наверное mencoder может, не интересовался. note по тому, как бороться с музыкой в странных форматах, которые прилагаются к cue, скорее для себя: ape, tta, flac -> wav:( Read more... ) | | Monday, August 11th, 2008 | | 9:42 pm |
графиком RURUSD http://bash.org.ru/quote/391925 : « У нашего центробанка огромные валютные резрвы и неограниченное право на эмиссию, он может слово "ХУЙ" графиком RURUSD написать, не то что держать курс на любой понравившейся цифре» Кстати, кредиты на покупку бытовой техники/автомобилей мне всегда казались очень странной штукой (когда не ради острой необходимости, а ради статуса). updatedPS. Возможно, было не ясно как связаны эти две фразы. Я просто наткнулся на некоторое количество сообщений в блогах "У блин кредит в долларах, блииин". | | Sunday, August 10th, 2008 | | 6:51 pm |
|
[ << Previous 20 ]
|