Эдуард, верните пожалуйста свою старую аватарку
Блин, 
Eddy_Em, ну серьезно.
Я уже привык к твоим патлам и кругам под глазами. Да и другие уже привыкли.
Ну нафига этот финт с кои? Разжигаешь? ))
Блин, 
Eddy_Em, ну серьезно.
Я уже привык к твоим патлам и кругам под глазами. Да и другие уже привыкли.
Ну нафига этот финт с кои? Разжигаешь? ))
Решил я вспомнить молодость. Точнее, просто балуюсь, а раньше, да, попиливал в групешнике одном. Но то было очень давно.
Собсно, вот мой шлягер-фигагер: http://my-files.ru/eyvdm8.
А это процесс его создания: http://s28.postimg.org/ercrl8jjx/qtractor.png. Кстати, Гном 2, ориджинал.
Да,
nihil, по этому тексту — он кривоват, получается только вторая половина, но без первой оно теряет смысл. В любом случае, как доковыряю — покажу что получилось. А на пока, вот, затравочку презентовал.
Думаю будет интересно для помогавших в решении проблемы с экспортом
zezic, 
FoodFighter и
lazyklimm.
Ну и конечно, как без главного фаната —
Rastafarra. Как говорится — получите, распишитесь.
А линукс тут притом, что на нём и записано.
Вобщем, вчера впилил qtractor, записал песенку, хотел вчера выложить в продолжение этой темы шоп поржали.
А тут, оппа, а оно не умеет экспорт микса. Ладно, создал я значит еще один канал, отправил все Buses (группы каналов) в мастер. А оно пишет только то, что напрямую в мастер подключено. Ну, например, микрофон в мастер, бас в мастер — их только и слышно. А те, которые через отдельную шину (например две гитары правый-левый каналы и в шине общая обработка для этой группы) — как звучат слышно, а на запись НЕ попадают.
Что, придется колдовать с джек-сервером/вирт шинами в альсе или паять лупбек из двух миниджеков? Карта самая топорная, какойто говнореалтек, в альсамиксере низзя поставить капчур с микса. Увы..
ДС. Еду значица сейчас в метро.
Смотрю — ходит молодая парочка по вагону с какой-то картонной надписью.
Доходят до меня. Практически тычат в лицо этой картонкой. Ни слова не говорят.
Спрашиваю — Что-то интересное?
Отвечают — Читайте.
Читаю. Не дословно, но смысл передам: «Помогите студентам из Санкт-Петербурга, хотим ночевать в хостеле..»
-- Сколько времени Вы хотите тут пробыть таким образом?
-- Неделю.
-- А сколько уже пробыли?
-- Полторы недели.
-- Ого. А какими судьбами тут?
-- В отпуске. Но кошелёк потеряли.
-- А чего домой не едете?
-- Так отпуск же.
-- Не верю. Удачи.
Во время разговора мне очень захотелось позвонить кому-нибудь из Питера, чтоб тот задал вопрос, ответ на который знает только Петербуржец.
А вообще это что — реинкарнация таблички «Дайте бабло на бухло», или флешмоб какой-то? Я видел далее — денег им давали.
Как правильно называются гибкие пленочные прозрачные плоские шлейфы? Вот те которые, например, от корпуса ноута к экрану идут.
Какие у них характеристики? Сопротивление? Падение напряжения? Технология изготовления? Ну и самое главное — где купить?
Не буду углубляться что есть CSRF. Кто в теме, тот знает.
Сабж вот в чем. Обычно везде в формах или ссылках пихают токен защиты. Мол, токена нет, или он не валидный — не буду ничо делать.
Ага. Но есть ли смысл в этом токене? Ведь достаточно проверить реферер (домен и внутренний путь предыдущей страницы). Например:
http://domain.tld/admin/users/remove?id=22http://domain.tld/admin/users(\?page=\d+)?А что касается угона кук и подделки реферера — это, извините, уже не CSRF, а ССЗБ, раз твои данные уже угнали.
Дискас!
Во, плохой: http://tejka2.narod.ru/index.html
Чего только не случается пока едешь на работу. И вот, сегодня, наслучалось. Дабы не забыть - запечатлею.
Картина маслом раз:
Еду значт в метро, стою. Передо мной сидит парниша. Волосы у него аки пакля на вид, взъерошенные. Там же, на пучке его сена нахлобучены наушники. Называются «V-moda», оть, даже пруф имеется: http://v-moda.com/headphones/ И все бы хорошо, да он их, так приодел, что читалось оно по русски, а еще и фантазия разыгралась: http://s14.postimg.org/c1h65s44x/V_Moda_Crossfade_M_100_White_Silver_35512458...
Картина маслом два:
Еду в метро дальше. Дед читает сегодняшнюю(?, пруфа не будет, картинко не нагуглилось) газету «Метро». Заголовок такой: «Сорок лет назад дети умерли от жевачки». Я деду говорю - позорище же - даже до газет уже неучи добрались. Всякие у них жЕвачки. Не хватает еще жИвачки и жУвачки.
Картина маслом три:
Вышел из метро. Навстречу чешет какой-то поц. - У Вас сигаретки не будет? - Вон в магазине есть, показываю рукой - 10 метров расстояние. - Да я бросаю.. - Ну так и не расслабляйся раз бросаешь. - И денег нет.. - И как это отменяет твое предыдущее утверждение?
Картина маслом четыре:
В этой истории правда только то, что в наш мужской туалет приходит какая-то тётка мыть свои чайно-кофейные кружки. Остальное я выдумал. Ну, поехали..
Захожу я в наш общественный туалет. Смотрю - тётка кружку намывает.
- Что вы делаете в мужском туалете? - Кружку мОю. - Так идите в женский мыть. - А мне в этот ходить ближе. - Мне тоже в женский ближе, но я туда не хожу. При вас даже в голос не пёрнуть. Вам самой то не стыдно? - Что Вы себе позволяете? Еще и учить меня будете? Я Вас старше! - Вам в лучшем случае требуется психолог, в худшем - психиатр.
В меня летит кружка, уворачиваюсь. Делаю ББПЕ леща по уху и выталкиваю тётку за шкибот из туалета. Проходит секунд тридцать. Я уже сижу на троне в одной из кабинок. Слышу как с грохотом распахивается дверь.
- Эй мужик! - Где мужик? - Ты о****?
И начинает ломиться в мою кабинку. Я говорю - Щас в 112 позвоню - узнаем кто тут чего ел. Звоню, говорю - приезжайте скорее, человеку спокойно посрать не дают. Чего хотят? Понятия не имею. Кто это? Да, судя по поведению, это какой-то Оскар по фамилии Блятель.
Кароч, устал я писАть, и работать надо )) Допишу позже, если ссылка редактирования еще не пропадет.
З.Ы.: Добавьте тег «туалет».
Для всех:
Если ты не работал руками (апи либ не в счет) с *.mp3 форматом — проходи мимо. Однако, если будет нормальная мысль - я весь внимание.
Для тех кто «в теме»:
Всякие ID3, LYRICS, AiD и прочую шелуху я скипнул.
И вот, парсю mp3-фреймы. Если ориентироваться на позиции sync-word-ов (ессно проверяю и все остальные данные в этих 4-х чарах) найденных в файле, то, можно вычислить размер каждого фрейма. Ага, я то вычисляю, но, эти размеры, а равно и их позиции, а равно и общее кол-во фреймов, не совпадает с тем кол-вом фреймов найденных libmp3lime (mad я пока не пробовал, надо будет поковырять).
Есь такая формула:
if (!header->layer) {
header->frame_size = (size_t) (((12000 * header->bitrate / header->samplerate) + header->padding_bit) * 4);
} else {
header->frame_size = (size_t) ((144000 * header->bitrate / header->samplerate) + header->padding_bit);
}Но она выдает размеры (300-8000 байт) не равные ни тому что я напарсил по синк-вордам, ни тому что напарсил libmp3lime.
А вот еще интересно, libmp3lime имеет в своем апи ф-цию «hip_decode1()» она, как написано, должна принимать на вход ОДИН мп3-фрейм, но, эксперименты дали понять, что ей вообще похер, что ты туда пихаешь, лишь бы не менее ~1200 байт, т.е. читай из файла и все.
Но мне то надо обрыскать весь файл и узнать точное число RAW-PCM фреймов закодированных в мп3.
Недавно видел тут в новостях про какой-то плеер чот тип того: «более-точное определение длительности мп3-трека», я смотрю, не один я с этой херней совладать не могу )))
UPD: А, да, кратко по проблеме. Кто подскажет где скопипастить:
1) правильную формулу вычисления длины мп3-фрейма. 2) правильный алгоритм выпарса и валидации этих самых фреймов.
Либы? Либы я копаю, и даже несколько великов нашел на гитхабе. Но там либо помойка, костыли и говнокод, либо поддержка одного лайера.
Супруга все время подвывает, мол, поехали куданить на землю. А я так не могу ответить конкретно насколько это будет выгодно и все такое.
Вот тогда надо наверное подумать за дом. Она уже давно лазит, ищет готовые решения, но там все - не то.
Щас вот предложил ей набросать свой план дома, чтоб было там все как самим хочется, и посчитать в какие сумму/сроки оно встанет.
Ну а конечная цель - либо она меня уломает, либо я докажу несостоятельность всей этой идеи.
Посоветуйте прогу, пожалуйста. Под онтоп конечно же.
Вчера вбросил знакомым одну простую задачку, которая слегка ввела их в ступор. Дай-ка и сюда вброшу.
Необходимо оптимизировать (переходы по адресу, кол-во условий/вызовов/переменных) и сделать лаконичным, понятным, читаемым, без лапши, копипасты, расширяемым для большего кол-ва значений за наименьшее кол-во телодвижений, следующий кусочек псевдокода:
// value can be: a,b,c,d,e,f or g
myLongLongNameOfVariable = getName();
if (myLongLongNameOfVariable == 'a' || myLongLongNameOfVariable == 'b' || myLongLongNameOfVariable == 'c' || myLongLongNameOfVariable == 'd' || myLongLongNameOfVariable == 'e' || myLongLongNameOfVariable == 'f') {
forAllNonDefault();
if (myLongLongNameOfVariable == 'a') {
forA();
} else if (myLongLongNameOfVariable == 'b') {
forB();
} else if (myLongLongNameOfVariable == 'c') {
forC();
} else if (myLongLongNameOfVariable == 'd') {
forD();
} else if (myLongLongNameOfVariable == 'e') {
forE();
} else if (myLongLongNameOfVariable == 'f') {
forF();
}
} else {
// last (here 'g') value context (default)
forDefault();
}Ваши предложения?
Вопрос касается только SQL. Есть две сущности: проекты и шаблоны.
Старая структура: все проекты могли использовать любой из шаблонов. Но в конкретный момент естественно только один.
Там две таблицы:
projects -> id, title, template_id
templates -> id, titleНовая структура: у каждого проекта должен быть свой собственный набор шаблонов. Активным может быть только один шаблон из «личного» набора.
Теперь нужны три таблицы:
new_projects -> id, title, current_template_id
new_templates -> id, title (, old_id)
new_projects_templates -> project_id, template_idНекоторые проекты используют одинаковые шаблоны. Первым шагом я «размножил» шаблоны и перебил им автоинкрементные айдишники. Однако, временно сохранил old_id, поэтому он и указан в скобочках, ведь после всех манипуляций я удалю это поле через ALTER TABLE.
Вот запрос втыкающий «размноженный» результат в новую табулю шаблонов:
SET @cnt := 0;
INSERT INTO new_templates (
SELECT
(@cnt := @cnt + 1) id,
sub.title,
sub.old_id
FROM (
SELECT
t.title,
t.id old_id
FROM templates t
LEFT JOIN projects p
ON p.template_id = t.id
WHERE p.id IS NOT NULL -- кастыль для шаблонов без привязки к проектам
ORDER BY t.id ASC -- чтобы вставка была в старом порядке создания шаблонов
) sub
);Вот так выглядит попытка тестовой выборки:
-- счетчик не сброшен
-- в нем максимальный айдишник после вставки
-- теперь декрементируем его
SELECT
(@cnt := @cnt - 1),
p.id project_id,
nt.old_id nt_old_id,
nt.id nt_id
FROM projects p -- из старой таблицы проектов
LEFT JOIN new_templates nt -- из новой таблицы шаблонов
ON nt.id = @cntЗвиняйте, но, какой мудадяй это сделал:
Есть в вимрц такое:
" New vertical split
map <Home> :vsp<cr><C-w>l<esc>:e ./<cr>
imap <Home> <esc>:vsp<cr><C-w>l<esc>:e ./<cr>
" New horizontal split
map <End> :sp<cr><C-w>j<esc>:e ./<cr>
imap <End> <esc>:sp<cr><C-w>j<esc>:e ./<cr>Вот этот <esc> перед :e ./ я добавил тока что, думал поможет.
Так вот, открываю я какой-либо файл. Затем открываю вертикальный сплит, хожу спокойно вверх-вниз по списку, и, ИНОГДА, в 50% случаев, при нажатии на энтер по выбранной директории (м.б. переход на уровень выше или провалиться внутрь) навигация в этом сплите соскакивает в какой-либо открытый левее сплит, причем гасит там номера строк и выдает такой статус внизу: «directoryname [Not edited][readonly] 10 lines --100%-- » где 10 lines это позиция (10 строка) директории в просмотре ":e", хотя курсор уже переброшен в какой-то из левее расположенных сплитов. Да, перескакивает всегда в разный, может в соседний ближайший, а может и в самый левый сплит.
Что за хрень?
Сижу вот, занимаюсь байто**ством. Вот некоторые модели данных.
ILP32 LP64 LLP64 ILP64
char 8 8 8 8
short 16 16 16 16
int 32 32 32 64
long 32 64 32 64
long long 64 64 64 64
size_t 32 64 64 64
pointer 32 64 64 64Один чел мне говорит «Проверяй, если инт 8 байт, то юзай шорт». Однако, педивикии говорят что ляликс юзает LP64, а оффтоп LLP64, не понимаю где чел встретил ILP64 (или какую-то другую?).
Растолкуйте от чего отталкиваться? Какие модели данных надо учесть хотябы для самых распространенных случаев?
В самом идеале, конечно, свою прилагу я предполагаю запускать на линукс/фря/оффтоп 32/64. Вопрос вообще возник от того, что читаю бинарку из файла, и там может быть BE, а может быть LE byte order, плюс еще размер самих типов, и надо как-то это все перелопачивать под то, на чем я запущен в конкретный момент.
В данном случае вопрос касается только размера инта, но полюбому я зацеплюсь в каком-нибудь месте рогами во что-то еще. Хотя это уже будет другой вопрос.
Имеется необходимость запилить несколько потоков в приложении, где каждый поток должен жить все то время пока прилага работает.
Вот, я перехватываю сигналы, например SIGINT. Кроме сигналов есть т.н. неисправимые ошибки в процессе выполнения.
При перехвате сигнала или появлении какой либо неисправимой ошибки я дергаю shutdown() завершение проги. Там все закрывается и освобождается.
Однако, естественно, что фатал эррор бывает вызывается из какого-либо потока, или даже, сигнал перехватывается «как-бы в контексте» потока. В таком случае вылезают понятные нативно, но не понятные в причинах касяки.
Собственно я сделал как. При старте проги получаю в (main контексте) thread_main = pthread_self() и устанавливаю threads_err = 0 Тогда в той части которая генерирует ошибку я проверяю в каком контексте она была вызвана (pthread_self() != thread_main), если это не в родительском main-потоке, то устанавливаю threads_err = 1 а цикл в main следит за состоянием этой переменной, и если ошибка есть, то вызывает shutdown()
Кажется мне, что это ГК. Или все же это нормальная практика? Нет? А как правильно?
Что-то я прошляпил. Есть какие-то подводные камни при использовании этих либ или самого формата в своем поделии?
Пока конечно только ковыряю, внедряю. Да, будет опенсорсный GPL v.3. Именно за несрастуху с лицензиями я и хотел бы уточнить.
Это вообще типа не обязательная опция, просто для поддержки формата, но хотелось бы её включить. С ворбисом та насколько я знаю все в поряде в этом плане.
Так собирается:
typedef struct {
int a;
int b;
} foo;
static struct {
int x;
foo **foos;
} bar;static struct {
int a;
int b;
} foo;
static struct {
int x;
foo **foos;
} bar;error: ‘struct <anonymous>’ has no member named ‘foosПочему?
Простой пример:
#include <alsa/asoundlib.h>
int
main()
{
snd_pcm_t *dev;
snd_pcm_open(&dev, "default", SND_PCM_STREAM_PLAYBACK, 0);
snd_pcm_close(dev);
return 0;
}Валгринд такой:
==20334== LEAK SUMMARY:
==20334== definitely lost: 0 bytes in 0 blocks
==20334== indirectly lost: 0 bytes in 0 blocks
==20334== possibly lost: 65,525 bytes in 2,020 blocks
==20334== still reachable: 298 bytes in 6 blocks
==20334== suppressed: 0 bytes in 0 blocks
==20334== Reachable blocks (those to which a pointer was found) are not shown.
==20334== To see them, rerun with: --leak-check=full --show-reachable=yes
==20334==
==20334== ERROR SUMMARY: 116 errors from 116 contexts (suppressed: 4 from 4)
--20334--
--20334-- used_suppression: 2 dl-hack3-cond-1
--20334-- used_suppression: 2 glibc-2.5.x-on-SUSE-10.2-(PPC)-2a
==20334==
==20334== ERROR SUMMARY: 116 errors from 116 contexts (suppressed: 4 from 4)Эти ошибки реально мешают тестировать свой говнокод.
UPD:
Т.к. это все продолжение вот этого: Как правильно запилить звуковой буфер с кроссфейдером? то кастану наверное снова
waker и
i-rinat там помогли понять что к чему и тут можт помогут.
Нужно именно про буфер с несколькими «читателями»
Не могу нагуглить. Попадается все время только где читает один поток. А мне нужно чтобы читали несколько.
Сам я додумываю только что должно как-то определяться по последнему, самому медленному читателю. Тогда не только пишущий поток должен ориентироваться на позицию чтения самого медленного, но и остальные читатели должны «не торопитьтся». Верно ли?
В лучшем случае я бы почитал про это где-нибудь в сети, но не могу нагуглить.
| ← назад | следующие → |