LINUX.ORG.RU

Сообщения Moonysh

 

Разместить предметы в ограниченном пространстве на JavaScript

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

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

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

Интересует два вопроса:
- Как лучше рисовать произвольные изображения для такого случая? Предполагаю, что canvas, хотя никогда его не пробовал.
- И собственно, алгоритм. Наверняка есть такие, пусть не готовые для JS, но хотя бы описание, порядок действий?

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

 

Moonysh
()

ищу ссылку на параллельный код на Си в два столбца

Не могу найти винрарную ссылку, где чувак писал параллельный код на си в два столбца. Обещал подруге показать...

Чатик, помоги?

 

Moonysh
()

Заставить mod_wsgi использовать python2 в gentoo

Gentoo, apache.

Перехожу с mod_python на mod_wsgi.

user@eeepc_host ~ $ equery u mod_wsgi
!!! No USE flags found for www-apache/mod_wsgi

user@eepc_host ~ $ eix mod_wsgi
[I] www-apache/mod_wsgi
     Available versions:  3.3 3.4
     Installed versions:  3.4(10:31:38 PM 05/10/2014)
     Homepage:            http://code.google.com/p/modwsgi/
     Description:         An Apache2 module for running Python WSGI applications.

Модуль mod_wsgi один, флагов у него нет. После установки оказалось, что он слинкован с python3.

user@eeepc_host ~ $ ldd /usr/lib/apache2/modules/mod_wsgi.so 
	linux-gate.so.1 (0xb770d000)
	libpython3.2.so.1.0 => /usr/lib/libpython3.2.so.1.0 (0xb74f4000)
	libpthread.so.0 => /lib/libpthread.so.0 (0xb74d9000)
	libdl.so.2 => /lib/libdl.so.2 (0xb74d4000)
	libutil.so.1 => /lib/libutil.so.1 (0xb74d0000)
	libm.so.6 => /lib/libm.so.6 (0xb74a4000)
	libc.so.6 => /lib/libc.so.6 (0xb7301000)
	/lib/ld-linux.so.2 (0xb770e000)

Есть возможность заставить его работать с python2?

В системе используется третий питон

user@eeepc_host ~ $ eselect python list
Available Python interpreters:
  [1]   python2.7
  [2]   python3.2 *

p.s. В документации к mod_wsgi есть такой абзац http://code.google.com/p/modwsgi/wiki/InstallationIssues

Multiple Python Versions

Where there are multiple versions of Python installed on a system and it is necessary to ensure that a specific version is used, the '--with-python' option can be supplied to 'configure' when installing mod_wsgi.

./configure --with-python=/usr/local/bin/python2.5

Я правильно понимаю, что нужно писать свой ебилд и собирать уже его?

 ,

Moonysh
()

soft reseting link, EH complete и вообще все плохо

В течении пары месяцев система подвисала на две минуты (при чтении с жесткого диска) и в /var/log/messages валилось следующее http://bpaste.net/show/226995/

Mar 31 01:14:26 local_big_pc kernel: [ 5077.088103] ata3: soft resetting link
Mar 31 01:14:27 local_big_pc kernel: [ 5077.720081] ata3.00: configured for UDMA/133
Mar 31 01:14:27 local_big_pc kernel: [ 5077.720105] ata3: EH complete
Mar 31 01:15:38 local_big_pc kernel: [ 5149.024100] ata3: soft resetting link
Mar 31 01:15:38 local_big_pc kernel: [ 5149.221920] ata3.00: configured for UDMA/133
Mar 31 01:15:38 local_big_pc kernel: [ 5149.221945] sd 4:0:0:0: [sdb]  Result: hostbyte=0x00 driverbyte=0x08
Mar 31 01:15:38 local_big_pc kernel: [ 5149.221951] sd 4:0:0:0: [sdb]  Sense Key : 0xb [current] [descriptor]
Mar 31 01:15:38 local_big_pc kernel: [ 5149.221961]         72 0b 00 00 00 00 00 0c 00 0a 80 00 00 00 00 00 
Mar 31 01:15:38 local_big_pc kernel: [ 5149.221976]         00 00 00 00 
Mar 31 01:15:38 local_big_pc kernel: [ 5149.221983] sd 4:0:0:0: [sdb]  ASC=0x0 ASCQ=0x0
Mar 31 01:15:38 local_big_pc kernel: [ 5149.221988] sd 4:0:0:0: [sdb] CDB: cdb[0]=0x28: 28 00 04 14 2a 10 00 00 08 00
Mar 31 01:15:38 local_big_pc kernel: [ 5149.222049] ata3: EH complete

Сегодня умерли журналы на нескольких разделах sdb1 и sdb6, а sdb5 выпал из raid-1 и в messages уже писалось чуть другое http://bpaste.net/show/227044/ :

Apr 23 06:32:18 local_big_pc kernel: [  167.330542] ata3: EH complete
Apr 23 06:32:18 local_big_pc kernel: [  170.342426] ata3.00: configured for UDMA/133
Apr 23 06:32:18 local_big_pc kernel: [  170.342442] ata3: EH complete
Apr 23 06:32:18 local_big_pc kernel: [  173.354329] ata3.00: configured for UDMA/133
Apr 23 06:32:18 local_big_pc kernel: [  173.354349] sd 4:0:0:0: [sdb] Unhandled sense code
Apr 23 06:32:18 local_big_pc kernel: [  173.354353] sd 4:0:0:0: [sdb]  Result: hostbyte=0x00 driverbyte=0x08
Apr 23 06:32:18 local_big_pc kernel: [  173.354358] sd 4:0:0:0: [sdb]  Sense Key : 0x3 [current] [descriptor]
Apr 23 06:32:18 local_big_pc kernel: [  173.354368]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
Apr 23 06:32:18 local_big_pc kernel: [  173.354384]         10 9d 90 d8 
Apr 23 06:32:18 local_big_pc kernel: [  173.354390] sd 4:0:0:0: [sdb]  ASC=0x11 ASCQ=0x4
Apr 23 06:32:18 local_big_pc kernel: [  173.354395] sd 4:0:0:0: [sdb] CDB: cdb[0]=0x28: 28 00 10 9d 90 d8 00 00 08 00
Apr 23 06:32:18 local_big_pc kernel: [  173.354458] ata3: EH complete

также в dmesg http://bpaste.net/show/227043/ :

[   66.534264] ata3: EH complete
[   69.520423] ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[   69.526263] ata3.00: BMDMA stat 0x25
[   69.531996] ata3.00: failed command: READ DMA EXT
[   69.537675] ata3.00: cmd 25/00:f0:08:90:9d/00:00:10:00:00/e0 tag 0 dma 122880 in
[   69.537677]          res 51/40:1f:d8:90:9d/40:00:10:00:00/e0 Emask 0x9 (media error)
[   69.549253] ata3.00: status: { DRDY ERR }
[   69.555008] ata3.00: error: { UNC }
[   69.598368] ata3.00: configured for UDMA/133
[   69.603994] sd 4:0:0:0: [sdb] Unhandled sense code
[   69.609638] sd 4:0:0:0: [sdb]  Result: hostbyte=0x00 driverbyte=0x08
[   69.615375] sd 4:0:0:0: [sdb]  Sense Key : 0x3 [current] [descriptor]
[   69.621151] Descriptor sense data with sense descriptors (in hex):
[   69.626897]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
[   69.632868]         10 9d 90 d8 
[   69.638644] sd 4:0:0:0: [sdb]  ASC=0x11 ASCQ=0x4
[   69.644370] sd 4:0:0:0: [sdb] CDB: cdb[0]=0x28: 28 00 10 9d 90 08 00 00 f0 00
[   69.650327] end_request: I/O error, dev sdb, sector 278761688
[   69.656085] JBD2: Failed to read block at offset 12062
[   69.656091] ata3: EH complete

и в syslog http://bpaste.net/show/227045/ :

Apr 23 06:32:18 local_big_pc kernel: [  167.292666] ata3.00: status: { DRDY ERR }
Apr 23 06:32:18 local_big_pc kernel: [  167.292669] ata3.00: error: { UNC }
Apr 23 06:32:18 local_big_pc kernel: [  170.304549] ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Apr 23 06:32:18 local_big_pc kernel: [  170.304553] ata3.00: BMDMA stat 0x25
Apr 23 06:32:18 local_big_pc kernel: [  170.304559] ata3.00: failed command: READ DMA EXT
Apr 23 06:32:18 local_big_pc kernel: [  170.304566] ata3.00: cmd 25/00:08:d8:90:9d/00:00:10:00:00/e0 tag 0 dma 4096 in
Apr 23 06:32:18 local_big_pc kernel: [  170.304568]          res 51/40:08:d8:90:9d/40:00:10:00:00/e0 Emask 0x9 (media error)
Apr 23 06:32:18 local_big_pc kernel: [  170.304572] ata3.00: status: { DRDY ERR }
Apr 23 06:32:18 local_big_pc kernel: [  170.304575] ata3.00: error: { UNC }
Apr 23 06:32:18 local_big_pc kernel: [  173.316451] ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Apr 23 06:32:18 local_big_pc kernel: [  173.316456] ata3.00: BMDMA stat 0x25
Apr 23 06:32:18 local_big_pc kernel: [  173.316461] ata3.00: failed command: READ DMA EXT
Apr 23 06:32:18 local_big_pc kernel: [  173.316470] ata3.00: cmd 25/00:08:d8:90:9d/00:00:10:00:00/e0 tag 0 dma 4096 in
Apr 23 06:32:18 local_big_pc kernel: [  173.316471]          res 51/40:08:d8:90:9d/40:00:10:00:00/e0 Emask 0x9 (media error)
Apr 23 06:32:18 local_big_pc kernel: [  173.316476] ata3.00: status: { DRDY ERR }
Apr 23 06:32:18 local_big_pc kernel: [  173.316479] ata3.00: error: { UNC }

Вот smartctl --all /dev/sdb http://bpaste.net/show/227097/ упал на self-test, хотя when failed чистое

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed: read failure       50%      3047         345648

Что происходит с диском и может ли эта проблема быть из-за действительно слабого БП? И что такое этот soft reseting link?

Говорю честно, искал, но своей проблемы в точности не нашел. Что вообще означают эти сообщения и коды?

 ,

Moonysh
()

google chrome и лишние get-запросы

Алгоритм работы приложения:
1. открываю (get) страничку login.php (при обращении к этом файлу стираются все cookies) и заполняю на ней форму
2. отправляю (post) запрос с данными к файлу login.php и (если они верны) то ставятся правильные cookies, а в ответе приходит страничка с текстовым сообщением что все окей и ссылкой «вперед»
3. нажимаю на ссылку «вперед» которая ведет на index.php - get запрос

лог-апача при заходе из FF (либо Opera):

GET /scripts/login.php HTTP/1.1 * 200 * 5421 * "Firefox/10.0.6"
// ввожу данные
POST /scripts/login.php HTTP/1.1 * 200 * 4936 * "Firefox/10.0.6"
// нажимаю на ссылку
GET /scripts/index.php HTTP/1.1 * 200 * 4756 * "Firefox/10.0.6"

лог-апача при заходе из Chrome:

GET /scripts/login.php HTTP/1.1 * 200 * 5421 * "Chrome/24.0.1312.45" 
// ввожу данные
GET /scripts/login.php HTTP/1.1 * 200 * 5421 * "Chrome/24.0.1312.45"  !!!! неизвестный запрос 1
POST /scripts/login.php HTTP/1.1 * 200 * 4936 * "Chrome/24.0.1312.45"
// нажимаю на ссылку
GET /scripts/login.php HTTP/1.1 * 200 * 5421 * "Chrome/24.0.1312.45" !!!! неизвестный запрос 2
GET /scripts/index.php HTTP/1.1 * 200 * 4756 * "Chrome/24.0.1312.45"

Это нормальное поведения браузера?
Лично мне оно очень мешает, потому что в самом начале login.php у меня убираются куки (на всякий случай), которые потом ставятся (или не ставятся) в зависимости от введенных данных.
Я открываю страницу, отправляю post (устанавливаются cookies), нажимаю на ссылку и когда происходит "неизвестный запрос 2" - cookies слетают и на index.php я прихожу уже без них.

 ,

Moonysh
()

Определение массива. Отображение в памяти

Внезапно осознал, что любое определение массива (например int mas[7];) порождает в памяти не такую структуру:

    mas
    ┏━┳━┳━┳━┳━┳━┳━┓
    ┗━┻━┻━┻━┻━┻━┻━┛

а такую:

    mas
    ┏━┓
    ┗━┛
     |
     |
     ∨
    ┏━┳━┳━┳━┳━┳━┳━┓
    ┗━┻━┻━┻━┻━┻━┻━┛

И так всегда. То есть, при определении массива выделяется место в памяти и под элементы, и под указатель на сам массив. Всегда! Офигеть...

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

UPD: я тупой, все что выше - неверно.

Перемещено mono из talks

 ,

Moonysh
()

KnR задание 5.19 «умный alloc»

Привет, дружелюбное сообщество.

Решаю задачку в KnR номер 5.19 (глава 5.10):

/***********************************************************************************/
/* Напишите программу tail для вывода последних п строк ее входного потока данных. */
/* Пусть значение п по умолчанию будет равно, скажем, десяти, но сделайте так,     */
/* 	чтобы его можно было изменить необязательным аргументом.                   */
/* Пусть следующая командная строка задает вывод последних п строк:                */
/*   tail -п                                                                       */
/* Программа должна вести себя устойчиво и рационально даже с самыми нелепыми      */
/* 	значениями п и содержимым входного потока. Напишите ее так, чтобы она      */
/* 	максимально экономно использовала память: строки должны храниться таким    */
/* 	образом, как в программе сортировки из раздела 5.6, а не в двумерном       */
/* 	массиве фиксированного размера.                                            */
/***********************************************************************************/

На clc-wiki мне не понравились варианты - http://clc-wiki.net/wiki/K&R2_solutions:Chapter_5:Exercise_13

Первый - это дичайший оверхэд, во втором чувак использует malloc (а я ищу решения категории 0). Третье и четвертое - по сути одно и то же. Буду рассматривать четвертое. Это первое что пришло в голову - сделать как в главе 5.6, а потом взять последние n строк. Если коротко, то создается allocbuf, на каждую строку вызывается p=alloc(len), строка копируется по адресу p. а указатель p записывается в lineptr[i] - массив указателей.

Но. В задании же сказано про максимальную экономию памяти! Недостаток предложенного способа в том, что allocbuf расходуется расточительно. Предположим, произошло его заполнение, а есть еще необработанные строки. Почему бы не «стереть» все строки кроме последних n (interest blocks) и продолжить работу? Для этого просто сдвигаем последние n строк (посимвольно) вначало allocbuf (запоминаем разницу = `diff`), и в массиве указателей для последних n указателей - «сдвигаем» на разницу `diff` их значения.

Что получилось (работает, но экстремально не тестировал):
main.c http://pastebin.com/3V4sw41g
alloc.c http://pastebin.com/MN67M9jX
getline.c http://pastebin.com/sKtCZLJe

Зачем я все это это написал - есть ряд вопросов:

Насколько кривая идея?

Насколько ужасная реализация?

Какие вещи в коде бросаются в глаза / что исправить, чтобы было «нормально»? (я начинающий)

В каких местах код непонятен? Где нужны комментарии?

мне убиться об стену?

p.s. В задании предполагается, что читатель знает только определенный объем знаний (до KnR раздела 5.10 включительно). То есть malloc не советовать, да.

 ,

Moonysh
()

RSS подписка на новые темы