LINUX.ORG.RU

Сообщения deep-purple

 

Хреновые симптомы

 , ,

В последнее время (месяца три уже тянется, с середины февраля) упадок сил моральных и физических.

Не могу выспаться, даже если ложусь спать вовремя.
А если и выспался, то хватает меня всего на пол дня продуктивной работы, а потом начинается «отлынивание».

Есть куча неотложных дел в семье и по дому.
Есть почти допиленный source client for audio streaming.
Есть почти допиленный сетевой сервис.
Есть начинания замутить «умный» дом.

Если взять неотложные дела, то они со скрипом, но, хрен с ними, делаются.

Если взять из списка все «почти» — то никак не получается завершить их из-за своего состояния. Ибо с работы приходишь и уже ничего не хочется делать.

А если взять «начинания» то до них вообще дело хрен дойдет такими темпами.

Так вот.
Что делать то?
Рацион сменить? Работу? График? (вдоль не предлагать)
Я так то не ленивый, да и не лень это. Вообще хрен пойми какое состояние.

deep-purple
()

Уничтожение данных на носителях информации

 , , , ,

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

И тут я подумал — а почему производители носителей информации не запилили специальных моделей?
Всмысле, не просто предоставлять готовые ящики, а «хардварно».

Ну, например для HDD могли бы (и технически это легко) запилить специальную головку, металлическую щетку, прямо в корпусе где эти блины вращаются. Где в обычном состоянии головка прижата к центру или периферии диаметра. А при посылке сигнала (джампером/кнопкой) выходит и начинает шкрябать блины — это же дело 10 секунд, тихо и безопасно.

А для SSD и флешек могли бы предусмотреть тоже какой-то джампер или спец-команду — хардварный сброс ячеек памяти. И все.

Вобщем сабж.

deep-purple
()

Эдуард, верните пожалуйста свою старую аватарку

 

Блин, Eddy_Em, ну серьезно.
Я уже привык к твоим патлам и кругам под глазами. Да и другие уже привыкли.

Ну нафига этот финт с кои? Разжигаешь? ))

deep-purple
()

Записал я свой шлягер ))

 , , ,

Решил я вспомнить молодость. Точнее, просто балуюсь, а раньше, да, попиливал в групешнике одном. Но то было очень давно.

Собсно, вот мой шлягер-фигагер: http://my-files.ru/eyvdm8.

А это процесс его создания: http://s28.postimg.org/ercrl8jjx/qtractor.png. Кстати, Гном 2, ориджинал.

Да, nihil, по этому тексту — он кривоват, получается только вторая половина, но без первой оно теряет смысл. В любом случае, как доковыряю — покажу что получилось. А на пока, вот, затравочку презентовал.

Думаю будет интересно для помогавших в решении проблемы с экспортом zezic, FoodFighter и lazyklimm.

Ну и конечно, как без главного фаната — Rastafarra. Как говорится — получите, распишитесь.

А линукс тут притом, что на нём и записано.

deep-purple
()

Решил затестить qtractor на выхах, а тут воно как

 , , , ,

Вобщем, вчера впилил qtractor, записал песенку, хотел вчера выложить в продолжение этой темы шоп поржали.

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

Что, придется колдовать с джек-сервером/вирт шинами в альсе или паять лупбек из двух миниджеков? Карта самая топорная, какойто говнореалтек, в альсамиксере низзя поставить капчур с микса. Увы..

deep-purple
()

Опять из серии «Ероша»

 , , ,

ДС. Еду значица сейчас в метро.
Смотрю — ходит молодая парочка по вагону с какой-то картонной надписью.
Доходят до меня. Практически тычат в лицо этой картонкой. Ни слова не говорят.

Спрашиваю — Что-то интересное?
Отвечают — Читайте.

Читаю. Не дословно, но смысл передам: «Помогите студентам из Санкт-Петербурга, хотим ночевать в хостеле..»

-- Сколько времени Вы хотите тут пробыть таким образом?
-- Неделю.
-- А сколько уже пробыли?
-- Полторы недели.
-- Ого. А какими судьбами тут?
-- В отпуске. Но кошелёк потеряли.
-- А чего домой не едете?
-- Так отпуск же.
-- Не верю. Удачи.

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

А вообще это что — реинкарнация таблички «Дайте бабло на бухло», или флешмоб какой-то? Я видел далее — денег им давали.

deep-purple
()

Шлейфы ? Плоские шины?

 

Как правильно называются гибкие пленочные прозрачные плоские шлейфы? Вот те которые, например, от корпуса ноута к экрану идут.

Какие у них характеристики? Сопротивление? Падение напряжения? Технология изготовления? Ну и самое главное — где купить?

deep-purple
()

CSRF-токен костыль?

 , , ,

Не буду углубляться что есть CSRF. Кто в теме, тот знает.

Сабж вот в чем. Обычно везде в формах или ссылках пихают токен защиты. Мол, токена нет, или он не валидный — не буду ничо делать.

Ага. Но есть ли смысл в этом токене? Ведь достаточно проверить реферер (домен и внутренний путь предыдущей страницы). Например:

http://domain.tld/admin/users/remove?id=22
Достаточно проверить что реферер был таким (псевдо-регулярка в конце):
http://domain.tld/admin/users(\?page=\d+)?
Т.е. удаление (в данном примере — пользака) возможно только со страницы просмотра списка пользаков.

А что касается угона кук и подделки реферера — это, извините, уже не CSRF, а ССЗБ, раз твои данные уже угнали.

Дискас!

deep-purple
()

А вы говорите — сайты плохие..

 , ,

deep-purple
()

«Ероша», Позорище, СтрелкИ и туалетные удобства

 , , ,

Чего только не случается пока едешь на работу. И вот, сегодня, наслучалось. Дабы не забыть - запечатлею.

Картина маслом раз:

Еду значт в метро, стою. Передо мной сидит парниша. Волосы у него аки пакля на вид, взъерошенные. Там же, на пучке его сена нахлобучены наушники. Называются «V-moda», оть, даже пруф имеется: http://v-moda.com/headphones/ И все бы хорошо, да он их, так приодел, что читалось оно по русски, а еще и фантазия разыгралась: http://s14.postimg.org/c1h65s44x/V_Moda_Crossfade_M_100_White_Silver_35512458...

Картина маслом два:

Еду в метро дальше. Дед читает сегодняшнюю(?, пруфа не будет, картинко не нагуглилось) газету «Метро». Заголовок такой: «Сорок лет назад дети умерли от жевачки». Я деду говорю - позорище же - даже до газет уже неучи добрались. Всякие у них жЕвачки. Не хватает еще жИвачки и жУвачки.

Картина маслом три:

Вышел из метро. Навстречу чешет какой-то поц. - У Вас сигаретки не будет? - Вон в магазине есть, показываю рукой - 10 метров расстояние. - Да я бросаю.. - Ну так и не расслабляйся раз бросаешь. - И денег нет.. - И как это отменяет твое предыдущее утверждение?

Картина маслом четыре:

В этой истории правда только то, что в наш мужской туалет приходит какая-то тётка мыть свои чайно-кофейные кружки. Остальное я выдумал. Ну, поехали..

Захожу я в наш общественный туалет. Смотрю - тётка кружку намывает.

- Что вы делаете в мужском туалете? - Кружку мОю. - Так идите в женский мыть. - А мне в этот ходить ближе. - Мне тоже в женский ближе, но я туда не хожу. При вас даже в голос не пёрнуть. Вам самой то не стыдно? - Что Вы себе позволяете? Еще и учить меня будете? Я Вас старше! - Вам в лучшем случае требуется психолог, в худшем - психиатр.

В меня летит кружка, уворачиваюсь. Делаю ББПЕ леща по уху и выталкиваю тётку за шкибот из туалета. Проходит секунд тридцать. Я уже сижу на троне в одной из кабинок. Слышу как с грохотом распахивается дверь.

- Эй мужик! - Где мужик? - Ты о****?

И начинает ломиться в мою кабинку. Я говорю - Щас в 112 позвоню - узнаем кто тут чего ел. Звоню, говорю - приезжайте скорее, человеку спокойно посрать не дают. Чего хотят? Понятия не имею. Кто это? Да, судя по поведению, это какой-то Оскар по фамилии Блятель.

Кароч, устал я писАть, и работать надо )) Допишу позже, если ссылка редактирования еще не пропадет.

З.Ы.: Добавьте тег «туалет».

deep-purple
()

Меня доконала эта помойка (*.mp3)

 , ,

Для всех:

Если ты не работал руками (апи либ не в счет) с *.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) правильный алгоритм выпарса и валидации этих самых фреймов.

Либы? Либы я копаю, и даже несколько великов нашел на гитхабе. Но там либо помойка, костыли и говнокод, либо поддержка одного лайера.

deep-purple
()

В какой прожке можно вменяемо набросать план дома?

 , ,

Супруга все время подвывает, мол, поехали куданить на землю. А я так не могу ответить конкретно насколько это будет выгодно и все такое.

Вот тогда надо наверное подумать за дом. Она уже давно лазит, ищет готовые решения, но там все - не то.

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

Ну а конечная цель - либо она меня уломает, либо я докажу несостоятельность всей этой идеи.

Посоветуйте прогу, пожалуйста. Под онтоп конечно же.

deep-purple
()

Все просто ))

 ,

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

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

// 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();
}

Ваши предложения?

deep-purple
()

Миграция на новую структуру БД

 , ,

Вопрос касается только 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
);
Ну а теперь никак не сообразу как запилить еще два шага: 2) вставка проектов в новую таблицу проектов с корректной привязкой к шаблону. 3) вставка в таблицу связи проекты-шаблоны.

Вот так выглядит попытка тестовой выборки:

-- счетчик не сброшен
-- в нем максимальный айдишник после вставки
-- теперь декрементируем его
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
Естессно выдает он полную хрень. Как правильно то запилить?

deep-purple
()

Кто сломал кодировку?

 ,

Звиняйте, но, какой мудадяй это сделал:

http://s17.postimg.org/dqpm2en73/charset.png

deep-purple
()

Хрень творится с вимом

 ,

Есть в вимрц такое:

" 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", хотя курсор уже переброшен в какой-то из левее расположенных сплитов. Да, перескакивает всегда в разный, может в соседний ближайший, а может и в самый левый сплит.

Что за хрень?

deep-purple
()

Модели данных

 

Сижу вот, занимаюсь байто**ством. Вот некоторые модели данных.

 	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, плюс еще размер самих типов, и надо как-то это все перелопачивать под то, на чем я запущен в конкретный момент.

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

deep-purple
()

Многопоточное приложение

 , , ,

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

Вот, я перехватываю сигналы, например SIGINT. Кроме сигналов есть т.н. неисправимые ошибки в процессе выполнения.

При перехвате сигнала или появлении какой либо неисправимой ошибки я дергаю shutdown() завершение проги. Там все закрывается и освобождается.

Однако, естественно, что фатал эррор бывает вызывается из какого-либо потока, или даже, сигнал перехватывается «как-бы в контексте» потока. В таком случае вылезают понятные нативно, но не понятные в причинах касяки.

Собственно я сделал как. При старте проги получаю в (main контексте) thread_main = pthread_self() и устанавливаю threads_err = 0 Тогда в той части которая генерирует ошибку я проверяю в каком контексте она была вызвана (pthread_self() != thread_main), если это не в родительском main-потоке, то устанавливаю threads_err = 1 а цикл в main следит за состоянием этой переменной, и если ошибка есть, то вызывает shutdown()

Кажется мне, что это ГК. Или все же это нормальная практика? Нет? А как правильно?

deep-purple
()

Копирасты, mp3, libmp3lame, libmad

 ,

Что-то я прошляпил. Есть какие-то подводные камни при использовании этих либ или самого формата в своем поделии?

Пока конечно только ковыряю, внедряю. Да, будет опенсорсный GPL v.3. Именно за несрастуху с лицензиями я и хотел бы уточнить.

Это вообще типа не обязательная опция, просто для поддержки формата, но хотелось бы её включить. С ворбисом та насколько я знаю все в поряде в этом плане.

deep-purple
()

Поясните за структуры

 , ,

Так собирается:

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;
Причем ругается уже ниже, в такой строке: bar.foos = NULL;

error: ‘struct <anonymous>’ has no member named ‘foos

Почему?

deep-purple
()