Журнал LinuxFormat - перейти на главную

LXF170:Фо­то­менед­жер digiKam

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «Категория: Учебники == Управ­ле­ние изо­бра­же­ния­ми == ''Мар­ко Фио­рет­ти объ­яс­н…»)

Версия 03:39, 17 ноября 2018

Содержание

Управ­ле­ние изо­бра­же­ния­ми

Мар­ко Фио­рет­ти объ­яс­ня­ет, как эф­фек­тив­но рас­ки­дать на всех управ­ле­ние боль­шой кол­лек­ци­ей циф­ро­вых фо­то­гра­фий.

Бла­го­да­ря циф­ро­вым ка­ме­рам и смарт­фо­нам се­го­дня да­же в неболь­шой се­мье, чле­ны ко­то­рой не ис­пы­ты­ва­ют боль­шо­го ин­те­ре­са к фо­то­гра­фии, ка­ж­дый ме­сяц по­яв­ля­ет­ся несколь­ко со­тен но­вых сним­ков. Хранить ты­ся­чи фо­то­гра­фий раз­бро­сан­ны­ми по раз­ным уст­рой­ст­вам или сва­лен­ны­ми без раз­бо­ра в од­ну-две пап­ки – это все рав­но что не иметь их во­все. Кол­лек­ция­ми фо­то удоб­но и при­ят­но поль­зо­вать­ся толь­ко тогда, когда их лег­ко най­ти, фо­то­гра­фии снаб­же­ны ком­мен­та­рия­ми, а пло­хие или поч­ти оди­на­ко­вые сним­ки уда­ле­ны. Но что­бы это­го до­бить­ся, мо­жет по­тре­бо­вать­ся очень мно­го вре­мени, ес­ли не раз­де­лить на­груз­ку.

Мы рас­ска­ж­ем о сре­де со­вме­ст­ной ра­бо­ты над фо­то­гра­фия­ми на ба­зе digiKam, ко­то­рая ис­поль­зу­ет­ся в основ­ном для сле­дую­ще­го сце­на­рия: есть се­мья или груп­па лю­дей, ко­то­рые хо­тят сфор­ми­ро­вать, клас­си­фи­ци­ро­вать, из­ме­нять и под­дер­жи­вать од­ну боль­шую об­щую кол­лек­цию циф­ро­вых фо­то­гра­фий на сво­их локаль­ных ком­пь­ю­те­рах или в локаль­ной се­ти. Пред­ло­жен­ный ме­тод несо­вер­шенен, но у него есть пре­иму­ще­ст­ва:

» у ка­ж­до­го уча­стника мо­гут быть и лич­ные аль­бо­мы digiKam;

» все функ­ции digiKam доступ­ны всем поль­зо­ва­те­лям;

» все дей­ст­вия мак­си­маль­но ав­то­ма­ти­зи­ро­ва­ны;

» все уча­стники мо­гут раз­ме­щать необ­ра­бо­тан­ные фо­то­гра­фии в об­щем аль­бо­ме;

» ка­ж­дый уча­стник мо­жет ра­бо­тать с лю­бо­го ком­пь­ю­те­ра из до­ма или – при пра­виль­ных на­строй­ке и ши­рине ка­на­ла – уда­лен­но.

Но опи­сан­ная ниже про­це­ду­ра на­строй­ки и ис­поль­зо­вания digiKam – толь­ко часть за­да­чи, не пер­вая и да­же не глав­ная. Дру­гие час­ти за­да­чи – понимание ря­да об­щих кон­цеп­ций, тща­тель­ное планиро­вание и глав­ное – стрем­ление ка­ж­до­го уча­стника поль­зо­вать­ся этим ме­то­дом на прак­ти­ке. По­жа­луй­ста, на­бе­ри­тесь тер­пения: об­щую кар­ти­ну опи­сы­вать доль­ше, чем ее реа­ли­зо­вать, но ес­ли не сде­лать это­го, все дальней­шее ут­ра­чи­ва­ет смысл.

С техниче­­ской точ­ки зрения, основ­ных тре­бо­ваний все­го два. Пер­вое – все уча­стники долж­ны поль­зо­вать­ся од­ной и той же вер­си­ей digiKam. До­бить­ся это­го непро­сто, так как на прак­ти­ке при­дет­ся тре­бо­вать, что­бы у всех уча­стников был один и тот же ди­ст­ри­бу­тив GNU/Linux и что­бы они об­нов­ля­ли его од­но­вре­мен­но. Од­на­ко из­бе­жать это­го никак нель­зя, так как при ав­то­ма­ти­че­­ской об­ра­бот­ке одних и тех же ме­та­дан­ных раз­ны­ми вер­сия­ми digiKam мо­гут возникать про­бле­мы.

Вто­рое тре­бо­вание – хо­тя бы один уча­стник дол­жен знать Linux доста­точ­но хо­ро­шо, что­бы вы­пол­нять неко­то­рые ад­минист­ра­тив­ные дей­ст­вия в команд­ной стро­ке; пи­сать код не при­дет­ся, но при­дет­ся ра­бо­тать вне digiKam, на­би­рая ко­ман­ды в команд­ной стро­ке и соз­да­вая про­стые скрип­ты. Это обя­за­тель­но, т. к. неко­то­рые из этих команд или их па­ра­мет­ров за­ви­сят от ис­поль­зуе­мо­го ди­ст­ри­бу­ти­ва (ди­ст­ри­бу­ти­вов) Linux, их кон­фи­гу­ра­ции и струк­ту­ры до­машней локаль­ной се­ти. Из-за необъ­ят­но­го ко­ли­че­­ст­ва со­че­таний мы про­сто не смог­ли бы под­роб­но опи­сать все воз­мож­ные на­бо­ры команд, да­же не бу­ду­чи ог­раниче­ны че­тырь­мя страница­ми. Од­на­ко мы со­об­щим доста­точ­но под­роб­но­стей для то­го, что­бы вы лег­ко на­шли под­хо­дя­щую для сво­ей кон­фи­гу­ра­ции до­ку­мен­та­цию.

Не­мно­го по­иг­ра­ем в ад­во­ка­та дья­во­ла: уве­ре­ны ли вы и ва­ша «ко­ман­да», что вам это нуж­но? Ведь digiKam из­на­чаль­но не пред­на­зна­чал­ся для команд­ной ра­бо­ты, и та­ким ско­рее все­го и останет­ся. По­то­му мы и ска­за­ли, что пред­ла­гае­мый ме­тод несо­вер­шенен. Его от­но­си­тель­но про­сто реа­ли­зо­вать и ис­поль­зо­вать, и он по­зво­ля­ет уча­стникам со­вме­ст­но поль­зо­вать­ся все­ми воз­мож­но­стя­ми digiKam в объ­е­ме, бо­лее чем доста­точ­ном для мно­гих групп. В то же вре­мя он не мо­жет быть пол­но­стью про­зрач­ным для конеч­ных поль­зо­ва­те­лей, и ес­ли вам че­го-то не хва­тит, при­дет­ся его рас­ши­рять.

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

Вве­дение в DAM в фо­то­гра­фии

DAM (Digital Assets Management – управ­ление циф­ро­вы­ми ре­сур­са­ми) – об­щий тер­мин для пра­вил и луч­ших под­хо­дов, ко­то­рым нуж­но сле­до­вать при управ­лении слож­ны­ми кол­лек­ция­ми циф­ро­вых фай­лов. По час­ти фо­то­гра­фий DAM ка­са­ет­ся фор­ма­тов и имен. Нуж­но вы­брать пра­виль­ный фор­мат (фор­ма­ты), в ко­то­рых долж­ны хранить­ся об­ра­бо­тан­ные фо­то­гра­фии. В боль­шин­ст­ве слу­ча­ев под­хо­дят PNG или JPEG. Сложнее с име­на­ми. Лю­бая об­щая кол­лек­ция фо­то­гра­фий останет­ся, или станет, бес­фор­мен­ной гру­дой, ес­ли уча­стники не при­дер­жи­ва­ют­ся одних и тех же имен для оп­ре­де­лен­ных ве­щей. На­при­мер, все уча­стники обя­за­ны при­ме­нять оди­на­ко­вую схе­му име­но­вания для всех аль­бо­мов и фо­то­гра­фий, неза­ви­си­мо от то­го, от ка­ко­го поль­зо­ва­те­ля или с ка­кой ка­ме­ры, смарт­фо­на или сканера они бы­ли по­лу­че­ны! Боль­шин­ст­во фо­то­гра­фов ис­поль­зу­ет да­ты и в име­нах фай­лов, и в име­нах аль­бо­мов (на­при­мер, ГГГГMMДД_от­пуск_тур­ба­за в име­нах аль­бо­мов) – это един­ст­вен­ный спо­соб га­ран­ти­ро­вать, что все фо­то­гра­фии оста­нут­ся в пра­виль­ном по­ряд­ке, да­же ес­ли объ­е­динить аль­бо­мы или до­ба­вить фай­лы; при этом уце­ле­ет по­иск по тэ­гам.

Кста­ти о тэ­гах! Хо­ро­шие име­на и ие­рар­хия тэ­гов де­ла­ют ра­бо­ту с на­бо­ром фо­то­гра­фий го­раз­до удобнее. По­трать­те немно­го вре­мени и про­ду­май­те свое де­ре­во тэ­гов и со­гла­шения по их ис­поль­зо­ванию, или хо­тя бы пред­ставь­те, как они долж­ны по­мочь вам. Вся­че­­ски из­бе­гай­те си­нонимов! Как по­ме­тить фо­то­гра­фии с со­бы­тия­ми из жизни сво­бод­но­го ПО? “Free Software”, “Free SW”, “FOSS” или как-то еще? По­дой­дет лю­бой ва­ри­ант, ес­ли у всех он бу­дет один и тот же!

Конеч­но, ис­чер­пы­ваю­щую струк­ту­ру тэ­гов для всех фо­то­гра­фий, ко­то­рые вы и ва­ши партнеры сниме­те за всю жизнь, сразу при­ду­мать невоз­мож­но. Тем не менее, чем боль­ше вы пред­ва­ри­тель­но оп­ре­де­ли­те на бу­ма­ге, тем мень­ше нуд­ных дей­ст­вий вам при­дет­ся по­вто­рять в бу­ду­щем. В ру­ко­во­дстве по digiKam есть пре­крас­ный раз­дел о DAM. По­жа­луй­ста, про­чти­те его внима­тель­но, пре­ж­де чем пре­тво­рять в жизнь то, что узнае­те на этом уроке.

Об­зор ар­хи­тек­ту­ры

Не­ко­то­рые свой­ст­ва (и ог­раничения) digiKam ока­зы­ва­ют пря­мое влияние на со­вме­ст­ную ра­бо­ту че­рез эту про­грам­му. Пер­вое – по­ня­тия кол­лек­ций и аль­бо­мов. У ка­ж­до­го поль­зо­ва­те­ля digiKam мо­жет быть несколь­ко неза­ви­си­мых кол­лек­ций изо­бра­жений. Каж­дая кол­лек­ция мо­жет на­хо­дить­ся на соб­ст­вен­ном уст­рой­ст­ве хранения дан­ных, будь то до­машний ка­та­лог, внешний USB-диск или уда­лен­ный раз­дел. Внут­ри кол­лек­ции изо­бра­жения объ­е­ди­ня­ют­ся в аль­бо­мы и по­даль­бо­мы, ко­то­рым со­от­вет­ст­ву­ют обыч­ные ка­та­ло­ги в фай­ло­вой сис­те­ме.

Для ра­бо­ты digiKam нуж­ны две ба­зы дан­ных: од­на для дан­ных digiKam, ко­то­рые мо­гут быть об­щи­ми или от­но­ся­щим­ся к изо­бра­жениям, и вто­рая – для хранения миниа­тюр изо­бра­жений. По умол­чанию это ба­зы дан­ных фор­ма­та SQLite в двух фай­лах: digikam4.db и thumbnails-digikam.db. Аль­тер­на­ти­вой мо­гут быть ре­ля­ци­он­ные ба­зы дан­ных MySQL с те­ми же име­на­ми. Ба­зы дан­ных SQLite по умол­чанию локаль­ные и недоступ­ны с дру­гих ком­пь­ю­те­ров или учет­ных за­пи­сей. В от­ли­чие от них, ба­зы дан­ных MySQL мо­гут жить на уда­лен­ном ком­пь­ю­те­ре. Ка­кой бы фор­мат ни ис­поль­зо­вал­ся, у поль­зо­ва­те­ля digiKam мо­жет быть сколь­ко угод­но кол­лек­ций фо­то­гра­фий, но лишь несколь­ко баз дан­ных.

Ме­сто­по­ло­жение кол­лек­ции мо­жет стать по­тен­ци­аль­ным ис­точником непри­ят­но­стей, когда digiKam ис­поль­зу­ет­ся с раз­лич­ных ком­пь­ю­те­ров. В име­нах кол­лек­ций ис­поль­зу­ет­ся уникаль­ный иден­ти­фи­ка­тор (UUID) фи­зи­че­­ско­­го уст­рой­ст­ва, на ко­то­ром они рас­по­ло­же­ны, или, когда он недосту­пен (на­при­мер, для RAID, уда­лен­ных ка­та­ло­гов и т. п.), толь­ко путь до их ка­та­ло­га. По­это­му в об­щем слу­чае ме­сто­по­ло­жение кол­лек­ции, со­хра­няе­мое в ба­зе дан­ных digiKam, мо­жет быть кор­рект­ным толь­ко в том слу­чае, ес­ли digiKam за­пуска­ет­ся на за­дан­ном ком­пь­ю­те­ре и/или для за­дан­ной учет­ной за­пи­си.

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

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

Ог­раничение на од­ну ба­зу дан­ных на поль­зо­ва­те­ля и про­бле­ма с син­хрониза­ци­ей ме­та­дан­ных – два очень важ­ных ог­раничения со­вме­ст­ной ра­бо­ты с digiKam. Боль­шин­ст­во прие­мов ра­бо­ты с «несколь­ки­ми digiKam», ко­то­рые мож­но най­ти в Се­ти, от­но­сят­ся к дру­гой си­туа­ции, когда толь­ко один поль­зо­ва­тель пы­та­ет­ся по­лу­чить доступ ко всем и толь­ко сво­им соб­ст­вен­ным кол­лек­циям фо­то­гра­фий digiKam с раз­ных ком­пь­ю­те­ров в раз­ные мо­мен­ты вре­мени.

Тео­ре­ти­че­­ски мож­но «схит­рить» несколь­ки­ми спо­со­ба­ми – на­при­мер, за­дав в на­строй­ках двух эк­зем­п­ля­ров digiKam од­ну и ту же ба­зу дан­ных MySQL с одними и те­ми же ло­ги­ном и па­ро­лем. Но так мы не по­мо­жем лю­дям, ко­то­рые хо­тят иметь и при­ват­ные кол­лек­ции, и это рис­ко­ван­ный спо­соб, спо­соб­ный за­вес­ти в ту­пик. digiKam не пред­на­зна­чен для под­держ­ки од­но­вре­мен­но­го досту­па – воз­мож­но, с раз­ны­ми поль­зо­ва­тель­ски­ми на­строй­ка­ми – к од­но­му на­бо­ру фо­то­гра­фий, баз дан­ных и ме­та­дан­ных. Реа­ли­за­ция этой под­держ­ки по­ка не за­планиро­ва­на, и нет га­ран­тии, что лю­бая «хит­рость» на этой ста­дии про­дол­жит ра­бо­тать в сле­дую­щей вер­сии. По­это­му мы пред­ло­жим дру­гой, не иде­аль­ный, но бо­лее безо­пас­ный спо­соб.

Кри­те­рии ра­бо­че­го про­цес­са

Ос­нов­ные кри­те­рии со­вме­ст­но­го ра­бо­че­го про­цес­са на ба­зе digiKam долж­ны быть та­ко­вы:

1 Вы­пол­нять мак­си­маль­но воз­мож­ный объ­ем дей­ст­вий вне digiKam.

2 Раз­ре­шить ком­пь­ю­те­ру де­лать это ав­то­ма­ти­че­­ски.

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

4 Сна­ча­ла вы­пол­нять опе­ра­ции, не свя­зан­ные с ба­зой дан­ных. Воз­мож­ное ис­клю­чение – гео­тэ­ги. Их мож­но про­ста­вить ав­то­ма­ти­че­­ски в са­мом на­ча­ле вне digiKam (см. ниже).

На­зна­чение двух по­следних кри­те­ри­ев сей­час про­ясним. А пер­вые два долж­ны быть по­нят­ны: мак­си­маль­ная ав­то­ма­ти­за­ция дей­ст­вий с по­мо­щью скрип­тов, осо­бен­но неко­то­рых на­чаль­ных скуч­ных дей­ст­вий, эко­но­мит мас­су вре­мени, умень­ша­ет ко­ли­че­­ст­во оши­бок и по­зво­ля­ет обой­ти ог­раничения digiKam. И вот как реа­ли­зо­вать это на прак­ти­ке. Вы мо­же­те адап­ти­ро­вать этот ме­тод к сво­им по­треб­но­стям, ес­ли со­блю­да­ют­ся при­ве­ден­ные вы­ше кри­те­рии и ес­ли ка­ж­дый уча­стник ра­бо­та­ет с об­щи­ми аль­бо­ма­ми сле­дую­щим об­ра­зом:

1 Опе­ра­ции, не свя­зан­ные с ба­зой дан­ных, вне digiKam: 1. за­груз­ка изо­бра­жений из ка­ме­ры во вре­мен­ную пап­ку; 2. ре­зерв­ное ко­пи­ро­вание в дру­гой ка­та­лог; 3. пе­ре­име­но­вание; 4. про­ста­нов­ка гео­тэ­гов, ес­ли необ­хо­ди­мые дан­ные доступ­ны; 5. кон­вер­та­ция фо­то­гра­фий в фор­мат с по­те­ря­ми дан­ных.

2 Руч­ные опе­ра­ции, не свя­зан­ные с ба­зой дан­ных, в digiKam: 1. от­бра­ков­ка – чем рань­ше вы из­ба­ви­тесь от пло­хих фо­то­гра­фий, тем луч­ше; 2. ре­дак­ти­ро­вание – уда­ление крас­ных глаз, ви­зу­аль­ные эф­фек­ты, кор­рек­ция кон­тра­ста и т. д.; 3. пе­ре­ме­щение но­вых фо­то­гра­фий в их окон­ча­тель­ное ме­сто­по­ло­жение внут­ри об­ще­доступ­ной кол­лек­ции digiKam; 4. ре­дак­ти­ро­вание в digiKam, свя­зан­ное с ба­зой дан­ных – пе­ре­име­но­вание аль­бо­мов, за­тем про­став­ление тэ­гов, оце­нок и ком­мен­ти­ро­вание фо­то­гра­фий.

Все опе­ра­ции эта­па 1 мо­гут и долж­ны вы­пол­нять­ся ав­то­ма­ти­че­­ски пу­тем за­пуска од­но­го скрип­та обо­лоч­ки, что мо­гут все уча­стники ко­ман­ды. Пер­вые два ша­га мо­гут вы­гля­деть при­мер­но так:

CAMERA_NAME=$1

USERNAME=`whoami`

find /media/$CAMERA_NAME -type f -iname “*jpg” -exec cp -p {} $TEMPFOLDER/$USERNAME/

cp -r -p $TEMPFOLDER/$USERNAME/* $BACKUP_FOLDER/$USERNAME

Ша­ги 1.3 и 1.4 мож­но ав­то­ма­ти­зи­ро­вать скрип­та­ми, о ко­то­рых мы рас­ска­зы­ва­ли в стать­ях «Exiftools: Фо­то по по­лоч­кам» (LXF143) и «Гео­тэ­ги» (LXF112). Шаг 1.5 – за­да­ча для ко­ман­ды convert па­ке­та Imagemagick, доступ­но­го во всех ди­ст­ри­бу­ти­вах Gnu/Linux. Три по­следних эта­па не ну­ж­да­ют­ся в по­яснениях. Раз­ные уча­стники ко­ман­ды мо­гут ра­бо­тать на эта­пе 2 од­но­вре­мен­но, в digiKam или лю­бой дру­гой про­грам­ме для ре­дак­ти­ро­вания изо­бра­жений. Это не про­бле­ма, по­то­му что, во-пер­вых, ка­ж­дый за­гру­жа­ет свои фо­то­гра­фии в соб­ст­вен­ный ка­та­лог ($TEMPFOLDER/$USERNAME/), и, во-вто­рых, не об­ра­ба­ты­ва­ют­ся ме­та­дан­ные (за ис­клю­чением гео­тэ­гов, ко­то­рые не долж­ны ме­нять­ся). Эта­пы 3 и 4 нуж­но обя­за­тель­но вы­пол­нять в digiKam!

Сей­час вы, конеч­но, ду­мае­те: «И в чем сек­рет? Как за­ста­вить все это ра­бо­тать для групп поль­зо­ва­те­лей?» Сек­рет в том, что для эта­пов 3 и 4 соз­да­ет­ся спе­ци­аль­ный поль­зо­ва­тель в Linux. Поль­зо­ва­тель, един­ст­вен­ной при­чи­ной су­ще­ст­во­вания ко­то­ро­го яв­ля­ет­ся вла­дение об­щей кол­лек­ци­ей, и един­ст­вен­ный поль­зо­ва­тель, ко­то­рый мо­жет из­ме­нять аль­бо­мы, фо­то­гра­фии в digiKam и пре­ж­де все­го ба­зу дан­ных для этой кол­лек­ции. Дру­ги­ми сло­ва­ми, ка­ж­дый уча­стник ко­ман­ды мо­жет вы­пол­нять два пер­вых эта­па в лю­бой мо­мент в сво­ей учет­ной за­пи­си Linux, да­же ес­ли все осталь­ные уча­стники де­ла­ют то же са­мое. Но для вы­полнения двух по­следних эта­пов он дол­жен вы­звать скрипт, ко­то­рый за­пуска­ет digiKam от имени поль­зо­ва­те­ля-вла­дель­ца или вы­да­ет пре­ду­пре­ж­дение или за­вер­ша­ет­ся, ес­ли та­кой эк­зем­п­ляр digiKam уже за­пу­щен.

У вла­дель­ца бу­дет толь­ко об­щая кол­лек­ция, аль­бо­мы ко­то­рой (и, сле­до­ва­тель­но, все ме­та­дан­ные фо­то­гра­фий) бу­дут доступ­ны для чтения дру­гим поль­зо­ва­те­лям. Так мы смо­жем из­бе­жать кол­ли­зий, и ка­ж­дый поль­зо­ва­тель смо­жет иметь столь­ко при­ват­ных кол­лек­ций, сколь­ко за­хо­чет, и смо­жет про­смат­ри­вать и ис­кать фо­то­гра­фии в об­щей кол­лек­ции в сво­ей про­грам­ме digiKam.

Под­го­тов­ка и реа­ли­за­ция

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

Вре­мен­ная пап­ка долж­на быть доступ­на на чтение и запись поль­зо­ва­те­лю test_1 и всем ре­дак­то­рам. Обыч­ные поль­зо­ва­те­ли мо­гут хранить пер­со­наль­ные кол­лек­ции digiKam в лю­бом мес­те.

Пап­ка с об­щей кол­лек­ци­ей (в на­ших при­ме­рах – /home/z/pictures) осо­бен­ная по двум при­чи­нам. Во-пер­вых, толь­ко у поль­зо­ва­те­ля test_1 долж­но быть пра­во из­менения фай­лов и ка­та­ло­гов внут­ри это­го ка­та­ло­га, но у ре­дак­то­ров долж­но быть пра­во их про­смат­ри­вать. Это по­зво­ля­ет из­бе­жать слу­чай­но­го из­менения или уда­ления фо­то­гра­фий при про­смот­ре об­щей кол­лек­ции поль­зо­ва­те­ля­ми с их пер­со­наль­ных учет­ных за­пи­сей. Для это­го мож­но ли­бо сде­лать test_1 чле­ном спе­ци­аль­ной груп­пы, где не бу­дет дру­гих поль­зо­ва­те­лей, ли­бо по­иг­рать с на­строй­ка­ми прав досту­па по умол­чанию. Что­бы уз­нать, как это сде­лать, оз­на­комь­тесь с man-страница­ми команд umask и adduser, а так­же с SELinux и до­ку­мен­та­ци­ей по управ­лению поль­зо­ва­те­ля­ми сво­его ди­ст­ри­бу­ти­ва.

Ес­ли вы ра­бо­тае­те в се­ти, вы так­же долж­ны пре­ду­смот­реть, что­бы и вре­мен­ный ка­та­лог, и уст­рой­ст­во, где хранит­ся об­щая кол­лек­ция, бы­ли доступ­ны всем поль­зо­ва­те­лям, же­ла­тель­но по од­но­му и то­му же аб­со­лют­но­му пу­ти. Для это­го про­ще все­го на­стро­ить об­щий ре­сурс NFS. Ес­ли путь по­че­му-ли­бо не мо­жет быть оди­на­ко­вым для всех, нуж­но внести со­от­вет­ст­вую­щие из­менения в скрипт для эта­па 1. Те­перь пе­рей­дем к ба­зе дан­ных. Ес­ли вы хо­ти­те ис­поль­зо­вать MySQL для об­щей кол­лек­ции, вот ко­ман­ды для соз­дания со­от­вет­ст­вую­щих баз дан­ных (вы­пол­нять их нуж­но от имени root):

[root ~]# mysqladmin create shared_digikam

[root ~]# mysqladmin create thumbnails_shared_digikam

[root ~]# mysql -u root

mysql> use mysql;

mysql> CREATE USER ‘test_1’@’localhost’ IDENTIFIED BY ‘digikam’;

mysql> grant all privileges on shared_digikam.* to ‘test_1’@’localhost’;

mysql> grant all privileges on thumbnails_shared_digikam.* to ‘test_1’@’localhost’;

mysql> exit;

По­следний этап на­строй­ки вла­дель­ца – на­строй­ка digiKam. Сра­зу по­сле соз­дания ак­ка­ун­та test_1 от­крой­те тер­ми­нал, пе­ре­клю­чи­тесь на поль­зо­ва­те­ля test_1 и за­пусти­те digiKam:

marco ~> su - test_1

Password:

[test_1 ~> digikam&

Так как это пер­вый за­пуск digiKam для дан­но­го поль­зо­ва­те­ля, от­кро­ет­ся мас­тер. Ука­жи­те, что фо­то­гра­фии нуж­но хранить в /home/z/pictures и что нуж­но до­бав­лять ин­фор­ма­цию в фай­лы. За­тем вве­ди­те под­хо­дя­щие па­ра­мет­ры ба­зы дан­ных и соз­дай­те локаль­ную се­мей­ную кол­лек­цию в /home/z/pictures. В этот мо­мент мас­тер за­пустит digiKam, ко­то­рая за­гру­зит все аль­бо­мы, уже имею­щие­ся в се­мей­ной кол­лек­ции. Пре­ж­де чем де­лать что-то еще, со­ве­ту­ем зай­ти в Settings > Theme [На­строй­ки > Те­ма] и вы­брать те­му, ко­то­рую не вы­брал ни один из дру­гих поль­зо­ва­те­лей digiKam. Это не обя­за­тель­но, но удоб­но, так как на­по­ми­на­ет поль­зо­ва­те­лям, что они за­пуска­ют про­грам­му в ре­жи­ме вла­дель­ца, а не в обыч­ном ре­жи­ме.

Те­перь мож­но ска­зать всем уча­стникам, что они мо­гут до­ба­вить но­вую се­мей­ную кол­лек­цию в свои на­строй­ки digiKam. Ка­ж­дый раз, когда они за­хо­тят про­смот­реть эту кол­лек­цию из сво­его эк­зем­п­ля­ра про­грам­мы, им при­дет­ся вы­брать пункт ме­ню Album > Re-read metadata from images [Аль­бом > Пе­ре­чи­тать ме­та­дан­ные изо­бра­жений]. Из­бе­жать это­го нель­зя, ес­ли они хо­тят уви­деть тэ­ги и ком­мен­та­рии, до­бав­лен­ные в ре­жи­ме вла­дель­ца.

Вам так­же при­дет­ся объ­яснить сво­им партнерам, как за­пустить digiKam в ре­жи­ме вла­дель­ца ка­ж­дый раз, когда они бу­дут до­бав­лять, снаб­жать тэ­га­ми или оценивать фо­то­гра­фии в этой кол­лек­ции. Вкрат­це, вы долж­ны соз­дать про­стые скрип­ты, ко­то­рые соз­да­ют файл бло­ки­ров­ки и за­пуска­ют digiKam, за­тем на­страи­ва­ют все учет­ные за­пи­си (и ком­пь­ю­те­ры) с Linux, так что поль­зо­ва­те­ли мо­гут за­пустить этот скрипт (с команд­ной стро­ки или щелк­нув по икон­ке на ра­бо­чем сто­ле) с иден­ти­фи­ка­то­ром поль­зо­ва­те­ля test_1. Тео­ре­ти­че­­ски по­сле нуж­ной на­строй­ки ко­ман­ды sudo скрип­ты мо­гут быть та­ки­ми:

~>cat /home/test1/digikam_owner

  1. ! /bin/bash

if [ -d “/home/test1/digikam_owner_lock” ]

do

echo “Warning: somebody else is already working in owner mode!”

exit

done

mkdir /home/test1/digikam_owner_lock

/usr/bin/digikam && rmdir /home/test1/digikam_owner_lock

~>cat digikam_launcher

  1. ! /bin/bash

xhost local:test_1

sudo -u test_1 -- /home/test1/digikam_owner

Пер­вый скрип вы­да­ет пре­ду­пре­ж­дение и за­вер­ша­ет­ся, ес­ли ка­та­лог /home/test1/digikam_owner_lock су­ще­ст­ву­ет. В про­тив­ном слу­чае он соз­да­ет этот ка­та­лог, за­пуска­ет digiKam и уда­ля­ет этот ка­та­лог по­сле за­вер­шения ра­бо­ты digiKam.

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

Аль­тер­на­тив­ный под­ход

Аб­со­лют­но дру­гой под­ход, ко­то­рым мож­но восполь­зо­вать­ся – за­пускать digiKam в ре­жи­ме вла­дель­ца в се­ан­се NX (под­роб­но­сти см. на www.nomachine.com) для поль­зо­ва­те­ля test_1, это мож­но сде­лать да­же с уда­лен­но­го ком­пь­ю­те­ра и/или ком­пь­ю­те­ра с Windows.

Пред­ло­жен­ный ра­бо­чий про­цесс от­де­ля­ет от осталь­ных дей­ст­вий все дей­ст­вия digiKam с об­щей кол­лек­ци­ей, тре­бую­щие из­менения ба­зы дан­ных и ме­та­дан­ных, пе­ре­дав их в осо­бую учет­ную запись поль­зо­ва­те­ля. В та­ком ра­бо­чем ок­ру­жении поль­зо­ва­те­ли мо­гут про­смат­ри­вать и ис­кать (но не из­ме­нять!) все аль­бо­мы и фо­то­гра­фии этой кол­лек­ции в сво­их эк­зем­п­ля­рах digiKam. Они мо­гут за­гру­жать в свои ба­зы дан­ных лю­бые ме­та­дан­ные, ко­то­рые лю­бой из них со­хранил в этих фо­то­гра­фи­ях, ра­бо­тая с ними в ре­жи­ме вла­дель­ца. У поль­зо­ва­те­лей так­же оста­ет­ся воз­мож­ность в лю­бое вре­мя де­лать все что угод­но со все­ми свои­ми пер­со­наль­ны­ми кол­лек­ция­ми (и толь­ко с ними). Лю­бая по­пыт­ка (на­ме­рен­ная или нет) из­менить се­мей­ную кол­лек­цию за­вер­шит­ся неуда­чей, по­то­му что толь­ко у учет­ной за­пи­си вла­дель­ца есть пра­ва досту­па на за­пи­си в свои ка­та­ло­ги и воз­мож­ность про­смот­ра на­стоя­щей ба­зы дан­ных в digiKam.

Пер­вое ог­раничение это­го ре­шения в том, что для из­менения об­щей кол­лек­ции поль­зо­ва­те­ли долж­ны за­пускать еще один эк­зем­п­ляр digiKam. Кро­ме то­го, поль­зо­ва­те­ли долж­ны пе­ре­за­гру­жать ме­та­дан­ные вруч­ную в сво­их эк­зем­п­ля­рах digiKam. Это неболь­шая це­на, ес­ли по­ду­мать, сколь­ко уси­лий она мо­жет сэ­ко­но­мить. Бо­лее зна­чи­тель­ный недоста­ток в том, что дан­ные, ко­то­рые digiKam не за­пи­сы­ва­ет в фо­то­гра­фии, на­при­мер, за­го­лов­ки и ка­те­го­рии аль­бо­мов, оста­нут­ся ви­ди­мы­ми (и доступ­ны­ми) толь­ко при за­пуске digiKam в ре­жи­ме вла­дель­ца.

Боль­шая это про­бле­ма или нет, за­ви­сит от то­го, как вы бу­де­те поль­зо­вать­ся digiKam. Ес­ли да, то есть нетри­ви­аль­ное, но осу­ще­ст­ви­мое ре­шение – на­пи­сать до­полнитель­ные скрип­ты, ко­то­рые пе­рио­ди­че­­ски или пря­мо пе­ред за­пуском digiKam ко­пи­ру­ют все эти дан­ные из ба­зы дан­ных вла­дель­ца в пер­со­наль­ные ба­зы дан­ных. |

Персональные инструменты
купить
подписаться
Яндекс.Метрика