Home

Advertisement

Customize
masterspammer
01 December 2009 @ 01:37 am
Прочитал про одну приятную фичу, которую хотел бы использовать. Кратко - загружать более одного файла за раз чрез одно поле ввода (выбирая их с Ctrlом в диалоге).

Браузеры это умеют свежие, поставил на пробу FF 3.6 beta 4 и оперу вроде бы 10.10 (но в UserAgentе она пишет "9.80 ... Version/10.10", что странно).

FF посылает два файла как будто бы просто два поля выбора файла с одним именем. Opera - по стандарту, через multipart/mixed - я это парсить не умел. Внутри multipart/mixed - такое же кодирование, как и внутри multipart/form-data, сначала думал сделать рекурсивный вызов парсера из него самого (но с другим разделителем), но в итоге сделал просто стек разделителей - diff парсера оказался в районе килобайта.

И приплыли! При совпадении имён старое значение у меня затиралось новым - ну вот как-то никогда не доводилось мне использовать одноимённые поля. Сначала сделал что второе вхождение превращает значение в массив, который последующими пополняется (файл - хэш, так что путаницы не будет) - некрасиво конечно что нужно думать - массив там или нет, ну да ведь форму тоже не чужой дядя пишет.

В php вроде бы есть поля-массивы, но что-то сразу я не понял как они работают, пришлось звонить товарищу-php-программисту и мои опасения оправдались - там тоже смешиваются массивы с немассивами - например "field" может испоганить массив "field[]". В процессе обсуждения пришли к тому, что в идеале бы хорошо к массивам сделать префикс или суффикс, чтоб не путать их с переменными. В качества суффикса я выбрал "[]" - как в форме и пишется. В итоге в хэше безо всякого конфликта будут лежать (ссылка на) массив "field[]" и просто строка "field" - то есть "[]" в конце имени я решил не убирать.

------
А вот CGI.pm я не употребляю. Хотя бы потому, __КАК__ там сделана (была в тот момент когда я принимал решение использовать ли CGI.pm) работа с закачкой - даже просто возможность отследить сколько там ещё осталось была сделана __ТАК__ ректально, что лучше не связываться с таким кодом. Чего уж говорить о том, чтоб посмотреть имя закачиваемого файла или менять лимиты в зависимости от content-type.
 
 
masterspammer
29 November 2009 @ 12:04 pm
Мышцы обнаружились совсем в странных местах и все они теперь болят. Лечится такое, как ни странно, тоже физнагрузкой.
 
 
masterspammer
Хотя перекодировку (если задействован utf) из-за изменения размера данных, который нужно знать ДО их отсылки, нельзя делать в чисто потоковом режиме, но и читать (хз сколько) данных в память тоже не вариант.

Получается вариант с файлом - писать в файл, перекодируя входной поток (потому что 200 мегов в файле - сильно лучше чем в памяти), а после окончания потока - узнать размер и начать отдачу.

Две очевидные оптимизации - до какого-то предела (мег там или даже половина) копить всё в памяти (для 99.9% запросов файл и не понадобится), а файл удалять сразу при создании и работать через дескриптор - чтоб мусор на диске не возникал.

После этого T.I.P.A.P.R.O.X.Y можно считать законченным и переходить к плагинам (например, чистка и слияние дерева комментариев ЖЖ в одну длинную ленту, что уже давно написано).
 
 
masterspammer
26 November 2009 @ 01:21 am
Месяц жил без компьютера, если что. Были ноутбуки (один из них в запасе так и пролежал) и числодробилка - оптероны и SAS это хорошо, но в корневой раздел OO вкорячить было проблемой.

Вчера разобрал кладовку, вытащил пациента. Пищит при включении - 1 раз, 5, 4 и ещё 4. Типа Power Failure. Отрубаю винты чтоб не спалить слабый запасной БП, проверяю - с этим включается. Покупаю новый (500 вт, пусть подавится). Теперь работает.

(Да, тут попути в кладовке порядок образовался, если что)

На винте этого компьютера (на винтах, точнее) было много старых архивов - музыка, видео, старое всякое и вообще. Кодировка имён файлов местами KOI8-R (ещё со старой системы), местами - Windows-1251 (что в incoming заливали), местами даже CP866. Мультимедия по тэгам игралась, konqueror ходил (сам на себя по FTP) с переключением кодировок, но ведь гадко же!

Написал скрипт, он вывел гипотезы для неюникодных имён в файл. Убрал всё что показалось разумным - остался файл исключение. Всё кроме них перекодировал, сменил алгоритм разкодирования, получил новый список... в итоге стало всё в порядке.

Часть бэкапов лежала на винте числодробилки - с ними сделал то же самое.

В итоге ощущение как будто дом прибрал и полы вымыл - чистота и порядок!
 
 
masterspammer
Этот (пошлый, если вам не 14-ти, вернитесь к поиску по ЖЖ) анекдот я часто использую как эпиграф к разным IT и звуковым делам (то есть если вы его уже знаете и узнали по заголовку, то читайте смело - больше пошлостей не будет).

 
 
masterspammer
18 November 2009 @ 07:50 pm
Привезли конденсаторы. 4 штуки: штука - литр. Я немного фигею, вот как они выглядят.
 
 
masterspammer
Из того, чего __МНОГО__ по всем углам и сусекам наскрести можно (телевизоры, компьютеры и лампы дневного света), вырисовывается следующее:

Блок питания: ТС-180 или ТСШ-170; всего 200 вольт, мало. Конденсаторы из БП компьютеров всего 200 вольт - им много. Диоды кремниевые или германиевые - дополнительный выключатель и верная смерть конденсаторам если подать напряжение сразу; кенотроны - обмотки не для двухполупериодного выпрямителя.

Решение - пару демпферных диодов в удвоитель напряжения - и задержка и по сколько-то вольт просядет чтоб конденсаторы были не на пределе. Дроссели - из ламп дневного света, в них при помощи стаместки и какой-то матери вхерачены кусочки перфокарт для зазора; после дросселей (удвоитель один, к нему два дросселя) - по два конденсатора последовательно, зашунтированные ЛСМ или ЛСЕ из той же лампы.

Корпус - из свитча planet или d-link (металлический) - в подвал уходят дроссели и конденсаторы, наверх - трансформатор питания и выходные (ТВЗ или ТВК, в идеале - перемотанные).

Про лампы ещё не думал; кандидаты (из тех же телевизоров) - 6П14П (возможно по 2 параллельно), 6П44С, 6П36С. В предварительном - 6Н1П, 6Н23П или 6Ж1П, 6Ж5П, 6Ж38П. Если не граничиваться перечисленным в первом абзаце, то можно рассмотреть и ГУ-29, ГУ-50, 6П3С, 6П6С, Г-411, Г-807 и много чего ещё.

На трансформаторе несколько накальных обмоток; одна из них - под входные лампы; регулируемая средняя точка поднята над землёй.

В итоге аппарат 20*30 см по площади и 15-20 см. в высоту.
 
 
masterspammer
07 November 2009 @ 09:43 pm
Время пить пиво и думать о социализме. Захватил я буквально самый хвостик оного, однако то что захватил было буквально пропитано распиздяйством и похуизмом.

Социализм поломали, стали строить капитализм. Что характерно, многие плюсы капитализма на тот момент стали уже неактуальны (вместо изготовления качественного товара уже регулярно вкладывали деньги в рекламу) ровно так же, как и некоторые минусы (типа  жёсткой эксплуатации, сменившейся корпоративным духом, который надо подпитывать).

Что-то построили. Оно как-то живёт (и мы со всем этим). Интересно, что похуизм и распиздяйство никуда не делись.И кажется мне, что от "идеального капитализма в вакууме" нас отделяет то же, что и отделяло от идеального социализма.

Не в сортирах была разруха, так я думаю...

---
Сразу этакая отмазка - социализм не есть тоталитаризм и не есть империя; возможны сочетания в любом варианте, что даёт понять что эти вещи независимы. Подробнее - см. словарь.
 
 
masterspammer
01 November 2009 @ 09:33 am
Для обычного лампового усилителя нужен дроссель, в идеале - два. Для цирклотрона - четыре. Одинаковых, естественно. Стоят дроссели не то чтоб дорого, но в больших количествах уже чувствительно.

Дроссель ламп дневного света не имеет зазора т.к. предназначен для работы в цепях переменного тока. Однако, ареал его обитания широк и численность велика. Найти два и даже четыре одинаковых дросселя - не проблема.

Так вот, очень часто зазор в магнитопровод ввести можно. Даже для такого дросселя. Вчера при помощи тонкой стамески и какой-то матери удалось засунуть две полоски от перфокарты в дроссель. Жужжит как чёрт-те-что (стянуть надо и пролакировать как было)
 но работает. Надо будет детально описать, зафотографировать и выложить сюда.
 
 
masterspammer
30 October 2009 @ 10:18 am
Си  
Пока ещё без объектов но и без оптимизаций.

Сцена 320*200 (long live DOOM'n'HEXEN)

Вычисление освещённости сцены - 0.004 сек.
Построение таблицы косинусов - 0.001 сек (и нефиг её делать каждый кадр)
Вычисление конфигурации теней - 0.004 сек.

Разобраться бы ещё как именно объекты выдёргивать по их координатам.

UPD: чуть не забыл - eeepc 701, кажется 900 МГц
 
 
masterspammer
28 October 2009 @ 08:39 am
На стройке мы выломали последние стены.

Перепала карточка Audigi 2 что-то-там.

Маша всё больше улыбается.

На работе новый проект - судорожно вспоминаю яву, которую успел подзабыть.

Заново учу си - воксели на нём написал кое-как и не полностью, но уже быстро до всякой оптимизации.

Банк проебал мои деньги за МБГВ, в процесс поиска.

Пёс сменил шкурку на зимнюю, на фоне свежего снега выглядит красиво.

У велосипеда отвалилась педаль (болт подвыкрутился и потом резьбу сорвал).

На ебеее куча дешёвых электролитических конденсаторов, буду ловить.
 
 
masterspammer
23 October 2009 @ 12:31 pm
Немалой сложностью оказалось ещё и сделать воксельную модельку. Сначала попробовал спиральку нарисовать, но она такая стрёмная вышла, что ой.

Вот каркасный кубик (сверху углы светлее, стороны темнее - это не глюк).

[кубик]

Отбрасывает тень (см. на тень от верхнего квадрата у подножья холма)

Как оно внутри работает - опишу попозже.

 
 
masterspammer
19 October 2009 @ 10:29 am
Написал прототип визуализации поверхности. Пока без цвета - чтоб легче экспортировать в GIF, который пригодится для анимашек (смена времени суток и движение облаков, например).

Много картинок... )
SRTMку взять что ли с Алтая для тренировки...

UPDATE: у меня FF что-то картинки масштабирует и они становятся "лесенкой" - если так, то косяк не мой и картинки нужно открывать по отдельности.
 
 
masterspammer
19 October 2009 @ 09:26 am
Перфоратор - это дрель с вибровызовом. 
 
 
masterspammer
13 October 2009 @ 02:10 pm
Вчера утром проснулся простывшим - интеллект минус 10, горло побаливает. Дома сидел, общался с дочкой и занимался малоинтеллектуальной деятельностью. Выгреб рыбье говно из аквариума (рыбы оказались в отличном состоянии, хотя я уже сомневался), заменил аквариум на больший, разобрал запчасти к компьютеру и радиодетали. Про последнее - оказывается:

1. Трансформаторы (типа ОСМ 0.25, ТС-250 и т.п.) обрушили полку, она следующую - в шкафу бардак и залежи.
2. После приборки всё что занимало полшкафа, кладовку и стол стало занимать чуть меньше чем полшкафа.
3. Нашлись разные интересные штуки, типа SCSI-mobile-rack или зарядка для беспроводной мыши (не USB, а от розетки 220в.).
4. Обнаружилось 3 штуки 6П45С (гитарный комбик "всех убью, один останусь" скорее будет чем нет), 7 штук 6П36С, 5 - 6П44С. Откопался здоровенный тиратрон.
5. Где-то валяется и всё ещё не найден игнитрон (внутри целый стакан ртути), что внушает опасения; так же скрывается пара полупудовых трансформаторов (со стрёмными напряжениями по 90 вольт - ни к лампам ни к транзисторам), ну да эти безвредны.
6. Отсортированная куча конденсаторов выглядит сильно приятнее - они группируююся по 4 и просятся куда-нибудь в осмысленное устройство.
7. Нашёл протекающий СМ 5мкф*600В, пока перевернул дыркой вниз, а потом разбирать и делить на 4; ну или просто заклеить.

P.S. Простуда вроде закончилась - ещё немного "штормит", но я уже дееспособен.
 
 
masterspammer
(продолжение ранее начатой темы)

Песочница заполнена песком и представляет собой квадрат много*много (например, 10000*10000 песчинок) . Песок сыплется и по-умолчанию(*) не допускает пустот. То есть для каждой координаты достаточно знать высоту, чтобы полностью определить расположение песка. Получается массив чисел. Одно число - один "столбик" песчинок.

Сумма всех "высот" по всем координатам постоянна(**) - в каком-то смысле это закон сохранения. Более того, при появлении чего-то (например, насекомое "вылупилось" из яйца) оно появляется "из песка", оставляя ямку (возможно даже соответствующей формы), а при исчезновении - распадается на песок (см. далее про состав грунта) - возможно, не всё, а только недоеденная хищником часть. Рост - уменьшает количества песка (через поедание растительности) в песочнице; естественно, только лишь до момента смерти существа. Ну и гадить они будут (чтоб не расти бесконечно) тем же песочком (но с другим составом :-) ).

При перемешивании песка (осыпание как просто из-за неустойчивости так и под воздействием вибрации) закон соблюдения также соблюдается.

Не для каждой точки, но для групп (8*8, например, далее называется "клетка") точек определены тип почвы, радиация (потом пригодится), уровень грунтовых вод (то, что ниже его - под водой; так же уровень грунтовых вод в разных точках стремится выровняться), химический состав(для питания растений) и характеристики растительности (растительные объекты не моделируются явно, но могут быть условно визуализированы подобно тому, как это делается на географических картах).

Клетки имеют и вычислимые параметры, например высота (среднее высот клеток), уклон (угол и азимут) и "шершавость" рельефа,  высчитываются из значений высот в точках, а солнечная радиация (в данный момент времени) - из уклона и погодных условий. Кэшировать или нет эти параметры - вопрос технический, и сугубо практический.

Песочница похожа на конечный автомат - точнее, на два - один большой, но простой и другой поменьше, но посложнее. Многое в песочнице описывается подобно клеточному автомата (рост растительности, перетекание воды, осыпание песка, возможно - песчаные бури и барханы и тому подобное), но не всё. Аналогично, действия существ/стихии могут быть описаны дополнительными правилами автомата, применяемыми попеременно с основными.

Погода в песочнице моделируется так (и по совместительству так же происходит визуализация):

В каждый момент времени для каждой точки (клетки) высчитывается угол падения лучей солнца и из него находятся её яркость, освещённость и температура. Затенённость высчитывается алгоритмом, похожим на z-буфер, но только значения в буфере постоянно уменьшаются (солнце светит не горизонтально, а под каким-то углом) на значение, зависящее от высоты светила над горизонтом. Результаты расчёта для точек и клеток не должны отличаться сильно :-)

Пиксельные и воксельные объекты (существа, пыль, паутина и тому подобное) находящиеся над песком считаем состоящими из висящих точек. Висящие точки имеют альфа канал и могут быть полупрозрачными.

Для каждой "висящей" точки актуальны координаты в двух плоскостях - относительно солнца (проекция на плоскость, перпендикулярную солнечным лучам) и относительно земли (собственно вертикальная проекция). Координата относительно солнца позволяет взять все точки, перекрывающие свет до данной (и отобразить тень если они есть). Где-то бесконечно высоко - плоскость точек с неопределённой координатой относительно земли - это облака, их тень движется по земле (как от изменения времени суток, а значит и угла падения лучей, так и от просто движения самих облаков). Сами облака не показываются.

В зависимости от затенённости точка освещена прямым или рассеянным светом. Это, а также её собственный цвет (зависит от типа почвы и растительности (пока будем считать что это текстура) клетки, местоположения точки в клетке (для текстуры) и нахождения её под водой) определяют цвет точки на экране. Вид - пока строго сверху.

(возможно, через размытие и изменение цвета в зависимости от высоты/глубины можно придать визуально большую объёмность итоговой картине; сюда же - имитация сглаживания теней из-за неточечного характера источника света - с ростом высоты тень более размыта)

Для клеток освещённость влияет на температуру. Висящие точки для клеток не рассчитываются, то есть на растительность не влияют; облака - влияют опосредованно через коэффициент облачности.

В итоге погода это уровень солнечной радиации, высота над горизонтом (и маршрут движения, соотв., длина дня и ночи), рассеянный свет (в зависимости времени суток). Спектральный состав света влияет только на визуализацию, два светила не могут быть вместе в один момент времени, однако, могут быть попеременно (если солнце есть, эффектом от луны пренебрегаем; вот две луны или два солнца - не получится). Луна, если что (точнее, освещённость ею) будет полезна для зрения ночных существ.

Манипуляции спектром и учёт тепла могут использоваться при визуализации альтернативных органов чувств, например, тепловидения или обоняния (имеется в виду - запах отображается как цвет поверх чёрнобелой картинки зрения).

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

------

Игровое поле будет выглядеть как Google Maps :-) и самое забавное, что я вполне представляю себе все алгоритмы, которые требуются для вышеописанного. Другое дело, что многие коэффициенты придётся находить опытным путём.

------

Примечания:

* "дыры" и "норы" моделируются отдельно и возможны далеко не для всякого места. Например, сухой песок просто осыпется.

** с поправкой на подземные пустоты, если они есть.
 
 
masterspammer
Задумал я тут не то чтобы игру, а скорее игрушку - нечто среднее между аквариумом, банкой с муравьями и геоинформационной системой. Пишу тут прежде всего чтоб не забыть самому то, что сейчас кажется очевидным.

Воксели
- песочница (натурально, коробка с песком) заполнена песчинками, которые можно рыть, насыпать, сдвигать и всё что можно делать с песком; визуализация соответствующая; в этой песочнице всё и происходит. Некоторые величины (влажность, уровень воды, состав и характеристики почвы, растительность) определены для фрагмента местнисти, а не для каждой песчинки. Естественные процессы (дождь, землетрясение) и деятельность живых существ меняют ландшафт.

Боиды - все живые экземпляры, населяющие песочницу в той или иной степени являтся боидами и именно этим, достаточно правдоподобным, образом перемещаются; коэффициенты "стадности" могут сильно разниться, ну да и "песочек" внесёт коррективы в траектории. Другие модели поведения будут, однако если двинулся один (по любым мотивам), то все прочие тоже боидным способом как-то пошевелятся-отреагируют.

Мемы - все существа обладают рефлексами. По сути, здесь мем - обобщение безусловного и условного рефлексов, в отличии от реального мира, какой-то особой разницы между передачи через общение/обучение и по наследству нет. Рефлексы могут вырабатываться, усиливаться, угасать и теряться; мемы при передаче иногда теряются или искажаются.

Пока не описаны - визуализация, климат, погода, гидрология, существа, их модели поведения и многое другое.

09 окт. 2009 21:24 - добавлено про песочницу (климат, погода и визуализация)

 
 
masterspammer
Последнее время как-то стало принято искать работу... у меня.

Где-то в районе пары недель получаю звонки на тему подойти на собеседование. Ко мне работать на должность... а вот тут достаточно разнообразно. Офис-менеджер, помощник руководителя, помощник офис-менеджера и ещё много разных. Вроде бы по объёвлению. Посылал их всех откуда пришли чтоб ещё раз телефон спросили и переспросили. Устал посылать.

Принял звонок когда был за компьютером, узнал адрес с которого прислали ответ на резюме, поискал в интернете - батюшки, да таких объявлений просто вагон... был. Большая часть удалена. Тексты похожие, телефон не мой, но похож. Ищу по телефону, вижу ещё один адрес. Писать письмо (исправьте ошибку, ироды) не стал, решил позвонить.

Дозвонился не сразу, сказал об ошибке, получил подтверждение, что это "сетевая компания" - по-видимому меня за сетевика приняли (хотя я и есть сетевик, да не в том смысле), сказал, что буду предупреждать, что компания сетевая и перенаправлять им.

Уже несколько человек получили эту благую весть, только что-то не очень рады были и похоже, что на правильный номер перезванивать не стали. Вот такая кукла Фубля, вот такой сетевой маркетинг.
 
 
masterspammer
06 October 2009 @ 05:27 pm
BOLK поднял интересную тему - plain text extension в формате GIF. Помню, писал библиотеку для GIF (точнее, портировал с паскаля свою же студенческую) на чистом perlе с поддержкой в том числе и анимации, сделал plain text extension по документации (в паскалевской версии не было вообще никакого текста) но так и не смог ни на чём проверить.

http://masterspammer.narod.ru/4lj/captcha.gif - пример картинки, в которой есть текст. Вроде бы по спецификации.

Оказывается, GIF Construction Set Pro умеет показывать (ну и делать, естественно) текст. Скачал триал (точнее, поставил как триал), запинал под CrossoverOffice (под просто Wine не идёт). Моя картинка определённо с текстом. Приятно, "вслепую" написал, а работает.

Есть ещё GDS (Graphics Display System) - под DOS; тоже скачал, но экспериментировать буду попозже.
  • http://bihon.tistory.com/150 - куча картинок - как GDS выглядит
  • Сама программа - ftp://garbo.uwasa.fi/pc/graphics/gds31d.zip
  • Много вообще старого для DOSа http://garbo.uwasa.fi/pc/graphics.html
Фича plain text extension не прижилась, хотя сейчас выглядит вполне полезной - написать на картинке тот же URL. Патчей к барузерам (и/или библиотекам) может и не примут, а вот "пасхальное яичко" для своих получается забавное.

Буду писать конвертор для текста в просто картинку; то есть слой с текстом - в слой изображения.
 
 
masterspammer
06 October 2009 @ 04:56 pm
Заглянул в (чужой) shell-код, сразу захотелось Боба Марли послушать.

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

Advertisement

Customize