Задачка на out-of-box thinking: монеты
Есть 12 монет. Одна из них фальшивая, она легче. Есть аптекарские весы (позволяют определить на какой чаше груз тяжелее). Каково минимальное количество взвешиваний, позволяющее определить фальшивую монету?
Есть 12 монет. Одна из них фальшивая, она легче. Есть аптекарские весы (позволяют определить на какой чаше груз тяжелее). Каково минимальное количество взвешиваний, позволяющее определить фальшивую монету?
Есть 2 бутыля: 5л и 3л. Нужно набрать 4л воды.
Дать 2 решения.
Да, задача из Крепкого Орешка, многие знают.
Кто заранее знает ответ (а не додумался) - молчите, пусть думают.
В продолжение А сможете ли вы найти площадь круга? by
teod0r
Есть три комнаты: к1, к2, к3. В каждую ведет закрытая дверь. В комнатах по одной лампочке. Возле трех дверей стоит панель с тремя выключателями: в1, в2, в3. Но вот проблема: какой выключатель от какой комнаты (какую лампочку включает) мы не знаем.
Мы стоим перед тремя закрытыми дверьми и панелью выключателей. Сейчас мы можем включать и выключать любые выключатели. После этого мы можем войти в две комнаты. После этого нам нужно будет сказать какой выключатель от какой комнаты.
Как это сделать?
Upd 1: изначально лампочки выключены.
Upd 2: рушить стены между комнатами нельзя
Upd 3: ждать пока перегорит нельзя
UPD: можно войти в 2 комнаты.
P. S. Ребята, кто знает решение - не спешите отвечать, пусть народ пому^W поучится...
Все привет!
Слушаю транс, в основном Goa (но не только). Все, что у себя - надоело, посоветуйте годного радио.
Пока слушаю trance.fm, но немного не то. Еще слушал подкасты Group Therapy, но в онлайне не нашел. Одни из моих любимых треков - записи из bpm.fm, но то, что я нашел в онлайне... в общем не транс там, видать просто «программы» есть какие-то.
Из любимого - Infected Mushroom, Alien Project, Guy Salama, Astral Projection... Вообще сборников много слушаю. Paul Oakenfold не нравится.
Есть на ЛОР'е любители транса?
Всем привет!
Есть NAS Synology . Вставил HDD, создал volume. Поскольку инфы туда нужно залить много, решил вытащить HDD и вставить его в комп. А там такое:
$ fdisk -l /dev/sdc
Disk /dev/sdc: 931,5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00038c31
Device Boot Start End Blocks Id System
/dev/sdc1 256 4980735 2490240 fd Linux raid autodetect
/dev/sdc2 4980736 9175039 2097152 fd Linux raid autodetect
/dev/sdc3 9437184 1953520064 972041440+ fd Linux raid autodetect
Всем привет.
Сломалась видяха, нужно покупать новую i. e. незапланированный апгрейд. Люблю покупать вещи на вырост. Посему присмотрел GIGABYTE GV-R787OC-2GD на Radeon HD 7870. Она PCI-E 3.0, а у меня на материнке только PCI-E 1.0. Посему вопросы:
1. Можно ли вставить такую видяху в слот PCI-E 1.0?
2. Как/насколько это скажется на перформансе в играх? (по сравнению с как если бы было слот PCI-E 3.0)
3. Как/насколько это скажется на перформансе всяких OpenCL и прочего майнинга?
4. Как/насколько это скажется на перформансе декодирования видео?
5. В каких случаях/приложениях еще будет заметна разница i. e. чего я еще не спросил, но стоило бы?
и еще (если знаете)
6. На мамке сейчас процессор Core2 Duo, 2Gb DDR2, 500W блок питания. Что-то из этого может «ограничить» такую видяху?
7. Какие могут быть траблы/особенности с такой видяхой в онтопике?
Заранее благодарен ответившим.
Всем привет!
Ищу торрент клиент, который бы:
1. Мог работать в режиме демона
2. Имел удобный WEB, и QT/GTK интерфейс
3. Автоматом «подхватывал» торрент файлы из каталога
4. Мог бы работать с симлинками. То есть после скачивания файла я его переместил на другой раздел, переименовал, но сделал правильный симлинк в то место, в которое он скачался, и клиент продолжил бы его раздавать.
Сейчас пользуюсь Deluge. Но он не умеет 4.
Знаю, что transmission умеет 1-3. Народ, transmission умеет 4?
KTorrent еще хорош, но AFAIK не умеет 1. Остальные не присматривал.
Порекомендуйте, пожалуйста, клиент, который умеет 1-4.
Спасибо.
Всем привет!
В кедах были настройки шрифтов, DPI, сглаживания и т. п. Это было в System Settings > Application Appearance > Fonts . Теперь кинулся - нет. Знаю 100% что было, так как только что проверил на другом ноуте с более старыми кедами.
Версия кед: 4.11.4 (самая свежая в Gentoo).
Под новым пользователем (чистыми конфигами) проверял - тоже нет.
Подтвердите баг. Или что может быть причиной и как вернуть?
Всем привет!
Имеется: планшет USB (ака большой тачпад) wacom. Что нужно: при подключении планшета чтобы автоматом запускался скрипт. Сейчас скрипт я запускаю вручную при каждом логине или переподключении планшета. Хочется сделать через udev.
Скрипт: /usr/local/bin/wacom_set.sh
Описания планшета:
$ lsusb | grep -i wacom
Bus 002 Device 004: ID 056a:0302 Wacom Co., Ltd
Содержимое /lib/udev/rules.d/65-libwacom.rules: http://pastebin.com/DDnSZXr2
Кстати, кто-то мне объяснит как с помощью указанного выше набора правил создается
/dev/input/event[345]
/dev/input/mouse[012]
/dev/input/by-id/usb-Wacom_Co._Ltd._Intuos_PTS-event-mouse -> ../event3
/dev/input/by-id/usb-Wacom_Co._Ltd._Intuos_PTS-if01-event-mouse -> ../event4
/dev/input/by-id/usb-Wacom_Co._Ltd._Intuos_PTS-if01-mouse -> ../mouse1
/dev/input/by-id/usb-Wacom_Co._Ltd._Intuos_PTS-if02-event-mouse -> ../event5
/dev/input/by-id/usb-Wacom_Co._Ltd._Intuos_PTS-if02-mouse -> ../mouse2
/dev/input/by-id/usb-Wacom_Co._Ltd._Intuos_PTS-mouse -> ../mouse0
При включении планшета в USB, вот лог:
Nov 29 23:39:41 localhost kernel: [ 8129.136141] hub 2-6:1.0: state 7 ports 4 chg 0000 evt 0010
Nov 29 23:39:41 localhost kernel: [ 8129.136382] hub 2-6:1.0: port 4, status 0101, change 0001, 12 Mb/s
Nov 29 23:39:41 localhost kernel: [ 8129.240143] hub 2-6:1.0: debounce: port 4: total 100ms stable 100ms status 0x101
Nov 29 23:39:41 localhost kernel: [ 8129.254162] hub 2-6:1.0: port 4 not reset yet, waiting 10ms
Nov 29 23:39:41 localhost kernel: [ 8129.316150] usb 2-6.4: new full-speed USB device number 6 using ehci-pci
Nov 29 23:39:41 localhost kernel: [ 8129.327141] hub 2-6:1.0: port 4 not reset yet, waiting 10ms
Nov 29 23:39:41 localhost kernel: [ 8129.404397] usb 2-6.4: skipped 1 descriptor after interface
Nov 29 23:39:41 localhost kernel: [ 8129.404402] usb 2-6.4: skipped 1 descriptor after interface
Nov 29 23:39:41 localhost kernel: [ 8129.404405] usb 2-6.4: skipped 1 descriptor after interface
Nov 29 23:39:41 localhost kernel: [ 8129.404640] usb 2-6.4: default language 0x0409
Nov 29 23:39:41 localhost kernel: [ 8129.405767] usb 2-6.4: udev 6, busnum 2, minor = 133
Nov 29 23:39:41 localhost kernel: [ 8129.405770] usb 2-6.4: New USB device found, idVendor=056a, idProduct=0302
Nov 29 23:39:41 localhost kernel: [ 8129.405773] usb 2-6.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Nov 29 23:39:41 localhost kernel: [ 8129.405775] usb 2-6.4: Product: Intuos PTS
Nov 29 23:39:41 localhost kernel: [ 8129.405778] usb 2-6.4: Manufacturer: Wacom Co.,Ltd.
Nov 29 23:39:41 localhost kernel: [ 8129.405860] usb 2-6.4: usb_probe_device
Nov 29 23:39:41 localhost kernel: [ 8129.405864] usb 2-6.4: configuration #1 chosen from 1 choice
Nov 29 23:39:41 localhost kernel: [ 8129.406173] usb 2-6.4: adding 2-6.4:1.0 (config #1, interface 0)
Nov 29 23:39:41 localhost kernel: [ 8129.406206] usbhid 2-6.4:1.0: usb_probe_interface
Nov 29 23:39:41 localhost kernel: [ 8129.406209] usbhid 2-6.4:1.0: usb_probe_interface - got id
Nov 29 23:39:41 localhost kernel: [ 8129.406228] wacom 2-6.4:1.0: usb_probe_interface
Nov 29 23:39:41 localhost kernel: [ 8129.406232] wacom 2-6.4:1.0: usb_probe_interface - got id
Nov 29 23:39:41 localhost kernel: [ 8129.406279] input: Wacom Intuos PT S Pen as /devices/pci0000:00/0000:00:1d.7/usb2/2-6/2-6.4/2-6.4:1.0/input/input13
Nov 29 23:39:41 localhost kernel: [ 8129.406385] usb 2-6.4: link qh2-0601/d3b30d00 start 0 [1/2 us]
Nov 29 23:39:41 localhost kernel: [ 8129.407156] usb 2-6.4: adding 2-6.4:1.1 (config #1, interface 1)
Nov 29 23:39:41 localhost kernel: [ 8129.407186] usbhid 2-6.4:1.1: usb_probe_interface
Nov 29 23:39:41 localhost kernel: [ 8129.407189] usbhid 2-6.4:1.1: usb_probe_interface - got id
Nov 29 23:39:41 localhost kernel: [ 8129.407204] wacom 2-6.4:1.1: usb_probe_interface
Nov 29 23:39:41 localhost kernel: [ 8129.407207] wacom 2-6.4:1.1: usb_probe_interface - got id
Nov 29 23:39:41 localhost kernel: [ 8129.407252] input: Wacom Intuos PT S Finger as /devices/pci0000:00/0000:00:1d.7/usb2/2-6/2-6.4/2-6.4:1.1/input/input14
Nov 29 23:39:41 localhost kernel: [ 8129.407406] usb 2-6.4: adding 2-6.4:1.2 (config #1, interface 2)
Nov 29 23:39:41 localhost kernel: [ 8129.407431] usbhid 2-6.4:1.2: usb_probe_interface
Nov 29 23:39:41 localhost kernel: [ 8129.407434] usbhid 2-6.4:1.2: usb_probe_interface - got id
Nov 29 23:39:41 localhost kernel: [ 8129.407447] wacom 2-6.4:1.2: usb_probe_interface
Nov 29 23:39:41 localhost kernel: [ 8129.407450] wacom 2-6.4:1.2: usb_probe_interface - got id
Nov 29 23:39:41 localhost kernel: [ 8129.407493] input: Wacom Intuos PT S Finger as /devices/pci0000:00/0000:00:1d.7/usb2/2-6/2-6.4/2-6.4:1.2/input/input15
Nov 29 23:39:41 localhost mtp-probe: checking bus 2, device 6: "/sys/devices/pci0000:00/0000:00:1d.7/usb2/2-6/2-6.4"
Nov 29 23:39:41 localhost mtp-probe: bus: 2, device: 6 was not an MTP device
Nov 29 23:39:41 localhost kernel: [ 8129.410023] usb 2-6.4: unlink qh2-0601/d3b30d00 start 0 [1/2 us]
Nov 29 23:39:41 localhost kernel: [ 8129.420076] ehci-pci 0000:00:1d.7: reused qh d3b30d00 schedule
Nov 29 23:39:41 localhost kernel: [ 8129.420082] usb 2-6.4: link qh2-0601/d3b30d00 start 0 [1/2 us]
Nov 29 23:39:41 localhost kernel: [ 8129.422778] usb 2-6.4: link qh2-0601/d3adc0c0 start 1 [1/3 us]
Nov 29 23:39:41 localhost kernel: [ 8129.424123] usb 2-6.4: unlink qh2-0601/d3b30d00 start 0 [1/2 us]
Nov 29 23:39:41 localhost kernel: [ 8129.426103] usb 2-6.4: unlink qh2-0601/d3adc0c0 start 1 [1/3 us]
Nov 29 23:39:41 localhost kernel: [ 8129.432496] ehci-pci 0000:00:1d.7: reused qh d3adc0c0 schedule
Nov 29 23:39:41 localhost kernel: [ 8129.432501] usb 2-6.4: link qh2-0601/d3adc0c0 start 1 [1/3 us]
Nov 29 23:39:41 localhost kernel: [ 8129.439031] usb 2-6.4: link qh2-0601/d3adc840 start 0 [1/3 us]
Nov 29 23:39:41 localhost kernel: [ 8129.444021] usb 2-6.4: unlink qh2-0601/d3adc840 start 0 [1/3 us]
Nov 29 23:39:41 localhost kernel: [ 8129.450483] ehci-pci 0000:00:1d.7: reused qh d3adc840 schedule
Nov 29 23:39:41 localhost kernel: [ 8129.450488] usb 2-6.4: link qh2-0601/d3adc840 start 0 [1/3 us]
Nov 29 23:39:41 localhost kernel: [ 8129.456707] usb 2-6.4: link qh2-3008/d3b30d00 start 1 [1/2 us]
Nov 29 23:39:41 localhost kernel: [ 8129.463013] usb 2-6.4: unlink qh2-3008/d3b30d00 start 1 [1/2 us]
Nov 29 23:39:41 localhost kernel: [ 8129.470433] ehci-pci 0000:00:1d.7: reused qh d3b30d00 schedule
Nov 29 23:39:41 localhost kernel: [ 8129.470438] usb 2-6.4: link qh2-3008/d3b30d00 start 1 [1/2 us]
Еще раз повторю вопрос: как сделать чтобы, при втыкании планшета в USB, автоматом запускался /usr/local/bin/wacom_set.sh ?
Заранее спасибо откликнувшимся!
Всем привет!
Купил планшет Wacom Intuos Pen + Touch S black/silver (CTH-480S-RUPL). Ну никак не получается заставить его работать. Помогите, плиз.
xf86-input-wacom установлен, INPUT_DEVICES=«evdev wacom» .
Ядро 3.6.2.
Драйвер собран модулем:
Device Drivers --->
Input device support --->
<*> Event interface
[*] Tablets --->
<M> Wacom Intuos/Graphire tablet support (USB)
Nov 9 22:35:30 localhost kernel: [ 817.957739] hub 2-5:1.0: state 7 ports 4 chg 0000 evt 0010
Nov 9 22:35:30 localhost kernel: [ 817.957973] hub 2-5:1.0: port 4, status 0101, change 0001, 12 Mb/s
Nov 9 22:35:30 localhost kernel: [ 818.062109] hub 2-5:1.0: debounce: port 4: total 100ms stable 100ms status 0x101
Nov 9 22:35:30 localhost kernel: [ 818.073104] hub 2-5:1.0: port 4 not reset yet, waiting 10ms
Nov 9 22:35:31 localhost kernel: [ 818.135116] usb 2-5.4: new full-speed USB device number 5 using ehci_hcd
Nov 9 22:35:31 localhost kernel: [ 818.146106] hub 2-5:1.0: port 4 not reset yet, waiting 10ms
Nov 9 22:35:31 localhost kernel: [ 818.223864] usb 2-5.4: skipped 1 descriptor after interface
Nov 9 22:35:31 localhost kernel: [ 818.223869] usb 2-5.4: skipped 1 descriptor after interface
Nov 9 22:35:31 localhost kernel: [ 818.223872] usb 2-5.4: skipped 1 descriptor after interface
Nov 9 22:35:31 localhost kernel: [ 818.224108] usb 2-5.4: default language 0x0409
Nov 9 22:35:31 localhost kernel: [ 818.225235] usb 2-5.4: udev 5, busnum 2, minor = 132
Nov 9 22:35:31 localhost kernel: [ 818.225239] usb 2-5.4: New USB device found, idVendor=056a, idProduct=0302
Nov 9 22:35:31 localhost kernel: [ 818.225241] usb 2-5.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Nov 9 22:35:31 localhost kernel: [ 818.225244] usb 2-5.4: Product: Intuos PTS
Nov 9 22:35:31 localhost kernel: [ 818.225246] usb 2-5.4: Manufacturer: Wacom Co.,Ltd.
Nov 9 22:35:31 localhost kernel: [ 818.225334] usb 2-5.4: usb_probe_device
Nov 9 22:35:31 localhost kernel: [ 818.225337] usb 2-5.4: configuration #1 chosen from 1 choice
Nov 9 22:35:31 localhost kernel: [ 818.225616] usb 2-5.4: adding 2-5.4:1.0 (config #1, interface 0)
Nov 9 22:35:31 localhost kernel: [ 818.225653] usbhid 2-5.4:1.0: usb_probe_interface
Nov 9 22:35:31 localhost kernel: [ 818.225655] usbhid 2-5.4:1.0: usb_probe_interface - got id
Nov 9 22:35:31 localhost kernel: [ 818.225685] usb 2-5.4: adding 2-5.4:1.1 (config #1, interface 1)
Nov 9 22:35:31 localhost kernel: [ 818.225716] usbhid 2-5.4:1.1: usb_probe_interface
Nov 9 22:35:31 localhost kernel: [ 818.225718] usbhid 2-5.4:1.1: usb_probe_interface - got id
Nov 9 22:35:31 localhost kernel: [ 818.225741] usb 2-5.4: adding 2-5.4:1.2 (config #1, interface 2)
Nov 9 22:35:31 localhost kernel: [ 818.225769] usbhid 2-5.4:1.2: usb_probe_interface
Nov 9 22:35:31 localhost kernel: [ 818.225772] usbhid 2-5.4:1.2: usb_probe_interface - got id
Nov 9 22:35:31 localhost mtp-probe: checking bus 2, device 5: "/sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.4"
Nov 9 22:35:31 localhost mtp-probe: bus: 2, device: 5 was not an MTP device
Содержимое /proc/bus/input/devices
I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=PNP0C0C/button/input0
S: Sysfs=/devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input0
U: Uniq=
H: Handlers=kbd event0
B: PROP=0
B: EV=3
B: KEY=100000 0 0 0
I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=LNXPWRBN/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
U: Uniq=
H: Handlers=kbd event1
B: PROP=0
B: EV=3
B: KEY=100000 0 0 0
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input2
U: Uniq=
H: Handlers=sysrq kbd event2
B: PROP=0
B: EV=120013
B: KEY=4 2000000 3803078 f800d001 feffffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=7
I: Bus=0003 Vendor=046d Product=c01b Version=0110
N: Name="Logitech USB-PS/2 Optical Mouse"
P: Phys=usb-0000:00:1d.7-5.3/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.3/2-5.3:1.0/input/input3
U: Uniq=
H: Handlers=mouse0 event3
B: PROP=0
B: EV=20017
B: KEY=3f0000 0 0 0 0 0 0 0 0
B: REL=103
B: MSC=10
B: LED=ff00
lsmod говорит что модуль wacom не подгружен.
xsetwacom --list devices показывает пустоту.
Если подгрузить модуль вручную с помощью modprobe, то в dmesg проскакивает одна строка:
Nov 9 22:41:53 localhost kernel: [ 1200.716516] usbcore: registered new interface driver wacom
Да, lsusb все видит:
$ lsusb | grep -i wacom
Bus 002 Device 005: ID 056a:0302 Wacom Co., Ltd
Куда копать? Udev? Модуль ядра?
Всем привет!
Понравился KDE4 плазмоид eyasdp, который ставит кнопки выключения/перезагрузки/..., дабы лишний раз в меню не тянуться. Сделал под него .ebuild для Gentoo. Выкладываю дабы:
- может кому-то виджет приглянется
- может кто-то почерпнет что-то по ebuild'о-писанию (тут, кстати, cmake используется)
- кто найдет ошибки/замечания - маякуйте, буду признателен
Всем, кому не терпится сказать «не нужно», просьба проходить мимо.
/usr/local/portage/kde-misc/plasma-eyasdp/plasma-eyasdp-1.1.0.ebuild
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI=5
KDE_MINIMAL="4.7.0"
QT_MINIMAL="4.7.0"
inherit cmake-utils kde4-base
DESCRIPTION="KDE4 plasmoid. eYaSDP allows to set a number of system buttons in your panel or desktop for comfortable and quick access."
HOMEPAGE="http://kde-look.org/content/show.php/eYaSDP?content=146530"
SRC_URI="http://kde-look.org/CONTENT/content-files/146530-eyasdp-1.1.0.tar.bz2"
#S="${WORKDIR}/eyasdp-1.1.0"
S="${WORKDIR}/${P#plasma-}"
#MY_P="${P#plasma-}"
LICENSE="GPL"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE=""
DEPEND="
$(add_kdebase_dep plasma-workspace)
dev-util/automoc
dev-lang/perl
"
RDEPEND="$(add_kdebase_dep plasma-workspace)"
Предполагается, что в make.conf есть PORTDIR_OVERLAY=«/usr/local/portage/»
Еще: скрипт, для определения минимального списка библиотек, от которых напрямую зависит определенный запускаемый файл/библиотека. Скрипт исключает непрямые зависимости; например, если plasma_applet_eyasdp.so зависит от libkworkspace.so.4 и libplasma.so.3, а libkworkspace.so.4 также зависит от libplasma.so.3, то libplasma.so.3 будет исключен из списка, так как предполагается, что при «подключении» libkworkspace.so.4 автоматически «подключится» и libplasma.so.3.
#!/bin/sh
# List minimum dependensies
Help()
{
echo "List minimum dependencies of a dynamic executable"
echo
echo "Usage: $0 <executable file or library>"
}
ListDependencies()
{
ldd "$1" 2>/dev/null | while read L1 A L2 OTHER ; do
if [[ "${L1:0:1}" == "/" ]] ; then
echo "$L1"
else
[[ -n "$L2" ]] && echo "$L2"
fi
done
}
if [[ $# != 1 ]]; then
Help
exit 1
fi
ldd "$1" >/dev/null 2>/dev/null
if [[ $? != 0 ]]; then
echo "Incorrect input file; shall be executable binary (ELF, .so etc)"
exit 2
fi
F_DIRECT=`mktemp`
F_INDIRECT=`mktemp`
F_TMP=`mktemp`
F_TMP2=`mktemp`
F=""
ListDependencies "$1" | sort | uniq > "$F_DIRECT"
cat /dev/null > "$F_INDIRECT"
F="$F_DIRECT"
#echo -n "Working"
while true ; do
cp "$F_INDIRECT" "$F_TMP"
cat "$F" | while read L ; do
ListDependencies "$L"
done >> "$F_TMP"
cat "$F_TMP" | sort | uniq > "$F_TMP2"
SIZE_INDIRECT=`ls -l "$F_INDIRECT" | awk '{print $5;}'`
SIZE_TMP=`ls -l "$F_TMP2" | awk '{print $5;}'`
[[ "$SIZE_INDIRECT" == "$SIZE_TMP" ]] && break
mv "$F_TMP2" "$F_INDIRECT"
F="$F_INDIRECT"
# echo -n "."
done
rm "$F_TMP"
rm "$F_TMP2"
#echo
cat "$F_DIRECT" | while read L ; do
L2=`cat "$F_INDIRECT" | grep "^$L$"`
[[ -z "$L2" ]] && echo "$L"
done
rm "$F_DIRECT"
rm "$F_INDIRECT"
Hope this helps
Всем привет!
Все чаще пользуюсь vim, но чувствую, что не хватает некоторых полезных функций, которые есть в GUI редакторах (а парочку я додумаю), а именно:
1. Сдвинуть строку/диапазон строк вправо/влево (ident)
2. Закомментировать/раскомментировать
3. Запомнить позицию (bookmark), переходить по букмаркам вперед/назад
4. Открыть несколько файлов и переключаться между ними
Додумываю:
5. Сохранить файл и скормить его скрипту/компилятору, увидеть результат работы скрипта/компилятора
6. Разделить окно на две части, чтобы вверху показывало один участок файла, внизу - другой.
7. Найти и заменить по регекспу (ну, как sed s/.../.../p )
8. Copy/paste между файлами.
9. И еще: можно чтобы все это (ну, может кроме двух последних) работало без выхода в командный режим, то есть по Ctrl+(что-то)?
Премного благодарен.
Всем привет.
Цель топика:
- гентушникам, которые не читают новости, обратить внимание на одну важную новость;
- понять, для всех ли случаев это применимо.
!Ъ: с последним обновлением прочитайте eselect news .
По сути: говорится, что с ноября /usr на отдельной партиции будет поддерживаться только при условии наличия initramfs. При этом за деталями посылают сюда: http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken ; ключевое слово в ссылке - systemd.
Вопрос: а если у меня не systemd, а openrc, да еще и с eudev, это актуально? Вообще, кто запрещает /usr на отдельной партиции: systemd, udev или кто-то еще?
Всем привет!
Пришло от хостера письмо, мол, «на вашем сайте найден вирус, бла-бла-бла». Посмотрел файлы: действительно, в конец index.html и некоторых других была дописана строка - JS скрипт. Почистил вручную.
Вопрос: почему такое могло произойти, и что нужно сделать, чтобы в будущем такого не было?
Дополнительный данные:
- Сайт у хостинг-провайдера hosting.ua.
- Человек, который создавал сайт, никаких настроек не делал; .htaccess состоит из одной строки «deny from all», но, похоже, это сделал провайдер как только обнаружил червя.
- Доступ только по ftp; ssh нет.
Думаю, должно быть что-то правильное в .htaccess, может убрать write из атрибутов файлов... Но не шарю я в этом. Подскажите, плиз.
UPD: Имя вируса: Trojan.Iframe-14
Всем привет.
UPD2: добавлены реализации boost и OpenMP, почищен код, добавлены комменты в код, немного переформулировано ТЗ (суть не поменялась).
Признаюсь: первый опыт с многопоточной программой, так что прошу ногами сильно не бить.
Решил написать простую программу генерации простых чисел по методу вычеркивания. В развитии этой темы, написал 6 алгоритмов, 4 из которых многопоточные, близнецы, но используют std:thread (метод Initiate3), std:async (Initiate4), boost (Initiate5), OpenMP (Initiate6). Изначально ожидал, что многопоточные алгоритмы загрузят все ядра процессора на 100% и дадут увеличение скорости работы программы. Результаты удивили:
- Все реализации выполняются примерно за одно время (даже OpenMP).
- Многопоточные реализации не быстрее однопоточной, а иногда даже медленнее!!!
std:thread - грузит одно ядро на 100%
std:async - грузит два ядра, общая нагрузка не более 100% одного ядра.
boost - грузит одно ядро
OpenMP - грузит два ядра (суммарная нагрузка 200%), но при этом выполняется не быстрее (обогреватель воздуха помещения)!
Вопрос 1: почему Initiate3,4,5 не грузит все ядра на полную мощность?
Вопрос 2: почему Initiate6 (OpneMP) грузит все ядра, но пи этом не быстрее?
Вопрос 3: Как получить профит от многопоточности в данной конкретной задаче?
Для тех, кто решится помочь - заранее спасибо, и вот инфа в помощь:
Краткое представление алгоритма. Создается массив, элементы которого соответствует числам 3, 5, 7... (ведь четные числа не простые априори). Если соотв. число простое, то значение элемента массива 1, если не простое - 0 (для чистоты эксперимента специально заменил bool на unsigned char). Заполняет массив функция Initiate, в параметрах которой - максимальное число до которого искать. Initiate1 втупую проверяет каждое число, Initiate2 - при нахождении простого числа проходит массив вперед и убирает (помечает не-простыми) соотв. числа, Initiate3,4,5,6 - то же, но с многопоточностью. MarkNonPrime2 и MarkNonPrime3 - близнецы, но вторая предназначена для запуска в отдельном потоке. Остальное, думаю, будет понятно из кода.
Запускать так:
$ g++ -std=c++11 -lpthread -L/usr/lib -lboost_thread prime.cpp -fopenmp -O0 -o prime && time ./prime
Выбор реализации - в main() вызвать нужный метод InitiateX.
Длительность выполнения программы регулировать изменяя параметр InitiateX в main.
Собственно код (prime.cpp):
#include <iostream>
#include <iomanip>
#include <vector>
#include <thread>
#include <future>
#include <boost/thread/thread.hpp>
using namespace std;
// Maximum threads that could be spawned (except OpenMP)
#define MAX_THREAD 100
class CPrimeNumbers{
public:
vector<unsigned char> numbers; // Array starts with 3 and has a step of 2: 3, 5, 7, 9 ...
inline uint NumberToIndex(const uint number) {return (number-3)/2;}; // BUG: check whether number is < 3
inline uint IndexToNumber(const uint index) {return index*2+3;};
void MarkNonPrime2(const uint v,const uint max); // Single thread version: mark all N*v numbers (N - integer, N*v<=max) as non-prime
static void MarkNonPrime3(CPrimeNumbers *sno, const uint v,const uint max); // Multithreading version: mark all N*v numbers (N - integer, N*v<=max) as non-prime
public:
// Find all prime numbers - different realizations
void Initiate1(const uint max=6); // Simple algorithm - checking each number
void Initiate2(const uint max=6); // Marking-forward algorithm, single thread
void Initiate3(const uint max=6); // Marking-forward algorithm, multithreading using C++11, std::thread
void Initiate4(const uint max=6); // Marking-forward algorithm, multithreading using C++11, std::async
void Initiate5(const uint max=6); // Marking-forward algorithm, multithreading using Boost
void Initiate6(const uint max=6); // Marking-forward algorithm, multithreading using OpenMP
void Print(); // Outhput prime numbers found
bool IsPrime(uint number); // Check whether given number is prime
};
bool CPrimeNumbers::IsPrime(uint number)
{
uint i;
// BUG: check whether number is =0
if (number<4)
return true;
if (number%2==0)
return false;
for (i=0;i<NumberToIndex(number);i++)
if ( numbers[i]==1 && number%IndexToNumber(i) == 0 )
return false;
return true;
};
/*static*/ void CPrimeNumbers::MarkNonPrime3(CPrimeNumbers *sno, const uint v,const uint max)
{
uint n;
n=v*3;
while (n<=max) {
sno->numbers[sno->NumberToIndex(n)]=0;
n+=v*2;
}
};
void CPrimeNumbers::MarkNonPrime2(const uint v,const uint max)
{
uint n;
n=v*3;
while (n<=max) {
numbers[NumberToIndex(n)]=0;
n+=v*2;
}
};
void CPrimeNumbers::Initiate6(const uint max)
{
uint head,i;
numbers.assign(NumberToIndex(max)+1,1);
for (head=3;head<=max;head+=2) {
if ( numbers[NumberToIndex(head)]==1 ) { // Is prime/unchecked yet
if (!IsPrime(head)) { // Is not prime
numbers[NumberToIndex(head)]=0;
}
else{ // Is prime
/*********** Multithreading using OpenMP ***********/
#pragma omp parallel
{
MarkNonPrime3(this,head,max);
}
}
}
};
};
void CPrimeNumbers::Initiate5(const uint max)
{
uint head,i;
vector<boost::thread> threads;
numbers.assign(NumberToIndex(max)+1,1);
for (head=3;head<=max;head+=2) {
if ( numbers[NumberToIndex(head)]==1 ) { // Is prime/unchecked yet
if (!IsPrime(head)) { // Is not prime
numbers[NumberToIndex(head)]=0;
}
else{ // Is prime
/*********** Multithreading using Boost ***********/
if ( threads.size()==MAX_THREAD) {
threads[0].join();
threads.erase(threads.begin());
}
threads.push_back( boost::thread(MarkNonPrime3,this,head,max) );
}
}
};
for (auto t=threads.begin();t!=threads.end();t++)
t->join();
};
void CPrimeNumbers::Initiate4(const uint max)
{
uint head,i;
numbers.assign(NumberToIndex(max)+1,1);
for (head=3;head<=max;head+=2) {
if ( numbers[NumberToIndex(head)]==1 ) { // Is prime/unchecked yet
if (!IsPrime(head)) { // Is not prime
numbers[NumberToIndex(head)]=0;
}
else{ // Is prime
/*********** multithreading using C++11, std::async ***********/
async(launch::async, MarkNonPrime3,this,head,max );
}
}
};
};
void CPrimeNumbers::Initiate3(const uint max)
{
uint head,i;
vector<thread> threads;
numbers.assign(NumberToIndex(max)+1,1);
for (head=3;head<=max;head+=2) {
if ( numbers[NumberToIndex(head)]==1 ) { // Is prime/unchecked yet
if (!IsPrime(head)) { // Is not prime
numbers[NumberToIndex(head)]=0;
}
else{ // Is prime
/*********** Multithreading using C++11, std::thread ***********/
if ( threads.size()==MAX_THREAD) {
threads[0].join();
threads.erase(threads.begin());
}
threads.push_back( thread(MarkNonPrime3,this,head,max) );
}
}
};
for (auto t=threads.begin();t!=threads.end();t++)
t->join();
};
void CPrimeNumbers::Initiate2(const uint max)
{
uint head,i;
numbers.assign(NumberToIndex(max)+1,1);
for (head=3;head<=max;head+=2) {
if ( numbers[NumberToIndex(head)]==1 ) { // Is prime/unchecked yet
if (!IsPrime(head)) { // Is not prime
numbers[NumberToIndex(head)]=0;
}
else{ // Is prime
/*********** Single thread ***********/
MarkNonPrime2 (head,max);
}
}
};
};
void CPrimeNumbers::Initiate1(const uint max)
{
uint i;
uint head;
numbers.assign(NumberToIndex(max)+1,1);
for (head=3;head<=max;head+=2) {
if (! IsPrime(head) )
numbers[NumberToIndex(head)]=0;
};
};
void CPrimeNumbers::Print()
{
uint n;
n=3;
for (auto i:numbers) {
if (i) cout << n << " ";
n+=2;
}
cout << endl;
}
int main()
{
CPrimeNumbers s;
/*********** Choose the algorithm ***********/
s.Initiate1(100000);
s.Print();
return 0;
}
Как я ждал этого!!!
Начал писать на php и использовать тамошний foreach. Удобная конструкция скажу я вам; заметил, что обычным for вообще почти перестал пользоваться. На C++ же делал по-старинке/по-привычке: for (int i=0;i<N;i++) . Это раз. Кроме того, в C++ очень напрягала работа с STL/итераторами: монструозные конструкции выходят.
Про развитие C++ читал, но никак не доходили руки. И вот решил попробовать:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<uint> v;
v.push_back(3);
v.push_back(5);
v.push_back(6);
// Вот здесь!!!
for(auto i:v)
cout << i << " ";
cout << "\n";
return 0;
}
$ g++ -std=c++11 delme3.cpp -o delme3 && ./delme3
3 5 6
Если кто еще не пробовал - рекомендую!
Всем привет!
Хочу скомпильнуть сей неказистый код:
#include <iostream>
using namespace std;
int main( )
{
int count = 10;
int& countRef = count;
auto myAuto = countRef;
countRef = 11;
cout << count << " ";
myAuto = 12;
cout << count << endl;
}
$ gcc -std=c++11 delme.cpp
/tmp/ccrF4TIa.o: In function `main':
delme.cpp:(.text+0x38): undefined reference to `std::cout'
delme.cpp:(.text+0x3d): undefined reference to `std::ostream::operator<<(int)'
delme.cpp:(.text+0x4d): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
delme.cpp:(.text+0x64): undefined reference to `std::cout'
delme.cpp:(.text+0x69): undefined reference to `std::ostream::operator<<(int)'
delme.cpp:(.text+0x71): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
delme.cpp:(.text+0x79): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/tmp/ccrF4TIa.o: In function `__static_initialization_and_destruction_0(int, int)':
delme.cpp:(.text+0xab): undefined reference to `std::ios_base::Init::Init()'
delme.cpp:(.text+0xc2): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccrF4TIa.o:(.eh_frame+0x13): undefined reference to `__gxx_personality_v0'
collect2: error: ld returned 1 exit status
$ gcc --version
gcc (Gentoo 4.7.3 p1.0, pie-0.5.5) 4.7.3
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ emerge -pv gcc
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild R ] sys-devel/gcc-4.7.3:4.7 USE="cxx fortran mudflap nls nptl openmp (-altivec) -doc (-fixed-point) -gcj -go -graphite -gtk (-hardened) (-libssp) -lto (-multilib) -multislot -nopie -nossp -objc -objc++ -objc-gc -regression-test -vanilla" 0 kB
Total: 1 package (1 reinstall), Size of downloads: 0 kB
ЧЯДНТ?
Всем привет!
Нужно скорее ваше мнение, так как вопрос на самом деле больше философский..
Симптом: При выключение компьютера падает Плазма, и пока не нажмешь какой-то там Ok, не дает выключить компьютер. При разборке полетов оказалось, это поведение вызывает один плазмоид.
Итак: разработчики KDE пишут что это нормально. https://bugs.kde.org/show_bug.cgi?id=320393
Лично я в сомнениях. Вот мои противоречивые аргументы:
1. Вот если бы ядро крашилось и вешало комп, а это было бы из-за какого-то /bin/cat , то это как-то не совсем нормально, так?
2. С другой стороны одна программа (KDE, Plasma) не может отвечать за действия других.
3. Стретьей стороны, по-хорошему KDE/kdm/что там еще должно управлять сессией и программами, которые в ней (сессии) запущены. И если какая-то программа (пусть плазмоид) сделала что-то не так, это не должно влиять на нормальную работу KDE (в данном случае на нормальный процесс выключения компьютера). Вроде тоже правильно.
Но как-то у меня однозначного мнения не сказывается.
А как вы считаете, нормальное ли это поведение Плазмы: останавливать процесс выключение компа сообщением о Crash при неверной работе плазмоида? Должны ли разработчики KDE исправить это?
Буду благодарен за аргументированные мнения.
Всем привет.
Помогите составить регулярное выражение.
Нужно распарсить csv файл, вот пример:
$ cat data.csv
One "Two Three" Four
"Five Six Seven" "Eight Nine" "Ten Eleven"
Twelve Thirteen Fourteen
Разделитель - пробел. В цикле читаю каждую линию, потом регуляркой выделяю нужную запись. Проблема в том, что есть записи в двойных кавычках, и в них тоже есть пробелы, и они все портят. Нужно как-то объяснить, что разделители (пробелы) в двойных кавычках нужно игнорировать. Как это сделать?
Вот мой незамысловатый код, который выделяет вторую запись (PHP, запускаю из консоли):
<?
$string='Twelve Thirteen Fourteen';
$pattern='/(\S+)\s(\S+).*/i';
$replacement='$2';
$result=preg_replace($pattern,$replacement,$string);
echo "$result\n";
?>
Ответ можете давать на любом из популярных языков (программирования), хоть через grep/sed; здесь важна сама регулярка.
Заранее спасибо!
Всем привет!
Уже очередной раз при обновлении пакета в Gentoo пишет вот такое:
* One or more symlinks to directories have been preserved in order to
* ensure that files installed via these symlinks remain accessible. This
* indicates that the mentioned symlink(s) may be obsolete remnants of an
* old install, and it may be appropriate to replace a given symlink with
* the directory that it points to.
*
* /var/run
*
Если честно не до конца понимаю что это значит, точнее не понимаю можно ли симлинк /var/run убивать (при условии что у меня 5 минут назад пересобран мир).
Есть здесь гентушники, у кого нет /var/run ?
Если /var/run все же есть, можно ли его убивать без негативных последствий?
| ← назад | следующие → |