Отследить обращение к фрагменту файла
Существует ли способ отследить обращения к фрагменту файла? Что-то типа inotify, но чтобы отслеживались не любые обращения к файлу, а только к указанному диапазону адресов?
Существует ли способ отследить обращения к фрагменту файла? Что-то типа inotify, но чтобы отслеживались не любые обращения к файлу, а только к указанному диапазону адресов?
Копирую данные с компьютера под Windows, и некоторые файлы не удаётся скопировать из-за того, что длина имени файла оказывается слишком большой. Если я правильно понимаю, дело в том, что и в NTFS ограничение на длину имени файла 255 символов, а в ext4 — 255 байт, то есть, для имён, состоящих из кириллицы, раза в два меньше.
На всякий случай уточню, что ограничения в 255 символов и байт — это не про полный путь, а про длину имени файла (в каталоге).
Погуглил, вроде проблема известная, в архиве нашёл аналогичную тему от 2010 года, вообще говоря, можно нагуглить аналогичные вопросы, там часто предлагаются варианты вроде изменить длину имён файлов (не вариант) и перейти на однобайтную кодировку (не вариант), использовать NTFS под Linux (не хотелось бы). А есть ли какое-то другое решение?
Подскажите, есть ли кроссплатформенный (Linux и Windows) Jabber-клиент, который даёт возможность отправлять сообщение из скрипта? То есть, нужно, чтобы в определённых случаях от имени пользователя автоматически отправлялось сообщение.
Какую из децентрализованных социальных сетей стоит выбрать? Попробовал Diaspora и Friendica, не могу сказать, какая из них однозначно лучше. В Diaspora нет (или я туплю и просто не нашёл?) возможности отобрать сообщения за определённый период (т.е. если ищешь какое-то старое сообщение, то чтобы не пролистывать вниз с самого конца, а просто выбрать нужный год и месяц). Но у Diaspora есть интерфейс для мобильных устройств, а Friendica открылась на смартфоне в том же виде, что и на компьютере. Кроме того, у Friendica в глобальном каталоге (http://dir.friendica.com/) столкнулся с кракозябрами: ввёл там «Петрозаводск», и на странице с результатом вместо «о» стоял нечитаемый знак. Впрочем, у Diaspora вроде бы нет общего каталога пользователей?
В общем, есть ли ещё какие-то аругменты в пользу той или иной сети? Или может есть ещё лучший вариант?
Есть задача: нужно организовать электронный каталог библиотечных книг с возможностью читать онлайн книги в электронном виде, причём просто каталог ссылок не подойдёт, книга должна показываться на сайте, но не должно быть ссылки, по которой её можно скачать. Существует ли свободное ПО для этого?
Возможно полезная информация для пользователей сети I2P. На сайте проекта, на странице с настройками браузера (https://geti2p.net/en/about/browser-config) сделано небольшое дополнение:
Note/Privacy tip: Set the FTP proxy to the same settings as the HTTP proxy.
Картинки правда ещё старые. В чём суть проблемы: если обращения браузера мимо сети I2P не были запрещены, то в случае, если на сайте есть контент, загружаемый по протоколу FTP (например, картинка), он загружался напрямую, что по идее позволяло узнать адреса посетителей сайтов. Проверить, нет ли у вас этой проблемы можно здесь: http://askh.ru/testi2p/, или (компьютер с I2P не всегда включён) http://askh.i2p/testi2p/. Если увидите свой реальный IP-адрес — меняйте настройки прокси-сервера :-)
Понятны причины, по которым государство пытается закручивать гайки и следить, кто что пишет в Интернете, понятно, что большинству из нас это не нравится. Решение вроде бы есть — Tor, I2P, особенно интересными выглядят такие вещи, как скрытые сервисы: обеспечивается не только анонимность пользователя, но и невозможность для органов цензуры надавить на владельца сайта (например, под угрозой его блокировки на территории страны, не факт, что Facebook, Twitter и т.д. не пойдут по этой причине на «сотрудничество»).
Однако в чём проблема: у этих ресурсов очень мало пользователей. И новые люди приходят, видят, скажем, почти пустой форум, и не задерживаются на нём. Ресурсы не развиваются. Соответственно новые пользователи опять же не задерживаются... Что называется, порочный круг. Что можно сделать, чтобы помочь его разорвать: поставить себе I2P, зайти на наиболее популярный форум, что-нибудь написать, что-нибудь откомментировать, чтобы дискуссия пошла, тогда будет больше шансов, что новые пользователи I2P не забросят её после первых экспериментов. А больше узлов — безопаснее сеть. И меньше желания у государства ограничивать обычные ресурсы, оно должно увидеть, что пытаясь усилить контроль рискует его вообще потерять, потому что пользователи начинают осваивать анонимные сети.
То есть, если кратко, идея такая: необходимо развивать I2P, и можно этому помочь без особых усилий. Просто пользуясь этой системой, в частности даже просто написав десяток сообщений на форуме в этой сети.
Сразу вопрос: подскажите, какой из русскоязычных форумов там наиболее популярен? Может там на самом деле жизнь кипит, но я просто ещё не нашёл где? :-) Сейчас только экспериментирую с этой сетью, поэтому могу тупо чего-то не знать ;-) В консоли маршрутизатора I2P есть ссылка на такой форум: http://forum.i2p, там есть русскоязычный раздел, вероятно его и можно назвать наиболее посещаемым?
Ubuntu 12.04, Xfce4. В качестве файлового менеджера используется Nautilus (нужны вкладки). В предпочитаемых приложениях в качестве файлового менеджера указан Nautilus. Однако если кликнуть по папке на рабочем столе, она открывается в Thunar. Есть ли решение?
Есть задача — несколько процессов пишут в FIFO, один читает. Порядок, в котором придут данные разных процессов не имеет значения, главное, чтобы эти данные не смешались (то есть например чтобы в середину строки, передаваемой одним процессом не попала часть строки от другого). Нужно ли предпринимать какие-то действия для этого (например, блокировать на время записи канал при помощи flock), или всё произойдёт само собой? Если важно — будут передаваться строки символов по 20, разделённые переводом строки.
Такой вопрос :-) Можно ли где-нибудь в Москве купить футболку с символикой Linux в воскресенье? Ну или как вариант бейсболку?
Экспериментирую с GNOME3, обнаружил, что не знаю способа открыть окно программы на текущем рабочем столе одним действием, который бы при этом не обладал тем или иным вредным побочным эффектом. Есть следующие варианты, у каждого из которых свой недостаток:
Я не вижу какой-то очевидной вещи? Или может это особенность Ubuntu, и в других дистрибутивах (а может в более новой версии GNOME?) есть способ открыть новое окно программы одним действием не задумываясь о том, открыты или нет другие окна той же программы?
Обновил Ubuntu, оценил улучшения в Unity и GNOME3, в общем, вопрос по Xfce: как сделать чтобы при закрывании крышки ноутбука он переходил в спящий режим? В разделе меню «Настройки» есть «Сеансы и запуск», там есть галочка «Запускать службы GNOME при входе в систему», если её поставить, то нужный функционал включается, но вместе с ненужным: запускается программа для речевого вывода и т.д. А сам Xfce этого не умеет? Неудобно каждый раз при завершении работы вручную отправлять ноут в спящий режим :-(
В Википедии есть описание алгоритма RSA: http://ru.wikipedia.org/wiki/RSA, там написано: «Выбираются два случайных простых числа p и q заданного размера (например, 1024 бита каждое).», а должны ли эти числа быть различными? Нужно написать программу, реализующую этот алгоритм, сейчас её проверяю, и обнаружил, что при разных p и q расшифрованный текст соответствует оригиналу, а при равных — не соответствует. Искать ошибку в программе или p и q действительно должны быть различными? В другом месте я нашёл указание на то, что они должны быть разными (http://sources.ru/csharp/RSACryptoPad.html): «Генерируем два различных больших нечетных простых числа, назовём их P и Q, одинакового порядка» (причём смущает, что во втором источнике оговаривается, что выбранные простые числа должны быть нечётными).
Если на одном рабочем столе уже открыто окно программы, то, если перейти на второй рабочий стол, и оттуда кликнуть по значку этой программы на левой панели, то нас перекинет на первый рабочий стол. Но ладно, против этого есть решение — не забывать, что новое окно открывается кликом по значку правой кнопкой мыши. Однако для Наутилуса и терминала это не работает! Если кликнуть правой кнопкой по значку в левой панели, то в открывшемся меню будет пункт Домашняя папка или соответственно Терминал, по клику на котором пользователя перебрасывает на другой рабочий стол, где уже есть окно соответствующей программы. Должен же быть способ открыть окно Наутилуса на новом рабочем столе мышью кроме как перейти на тот рабочий стол, где он уже открыт, открыть там новое окно, переместить его на нужный рабочий стол и перейти туда?..
Может чайниковский вопрос, но какого-то очевидного решения я не увидел.
Нетбук, Unity, открыты несколько документов в LibreOffice. Нужно быстро переключиться к конкретному документу или хотя бы перебрать их один за другим в поисках нужного.
В традиционном DE я бы отсортировал бы значки документов на панели задач по степени нужности и знал бы, что такой-то документ первый, такой-то второй и т.д., в крайнем случае просто кликал бы по значку каждого из окон и нашёл бы нужное.
В Unity нет панели задач. Можно дважды кликнуть по значку приложения на левой панели, тогда Unity покажет изображения каждого из окон, но на экране моего нетбука это будут четыре практически идентичных картинки — видно, что открыты несколько документов с каким-то текстом, но где среди них нужный? Существует ли в Unity возможность как-то решить эту проблему?
Пока писал, нашёл решение конкретно для LibreOffice: в меню есть пункт «Окно», которым я раньше никогда не пользовался, но теперь пригодится. Но это решение для частного случая, не во всех же программах есть функция переключения между окнами приложения.
Как известно, в Unity, при клике по значку приложения открывается существующее окно, а не новое. При использовании нескольких рабочих столов это приводит к очень неприятному эффекту: если окно открыто на другом рабочем столе, то перекидывает туда, и нужно возвращаться и заново открывать приложение. То есть пользоваться несколькими рабочими столами стало просто невозможно (я в итоге заметил, что хотя на десктопе активно пользуюсь несколькими рабочими столами, на нетбуке от этого отучился). Есть ли способ заставить Unity в такой ситуации открывать новое окно на текущем рабочем столе? И, если нет, можно ли как-то убрать значок переключения рабочих столов? В принципе, Unity — это интерфейс для нетбуков (на большом экране с ним работать просто невозможно), а на нетбуке несколько рабочих столов можно посчитать излишней функцией (ресурсов у системы относительно мало, так зачем держать открытыми окна, которые потребуются когда-то потом? лучше наверное заново открыть). Но при этом значок переключения между рабочими столами занимает место, лучше уж использовать его для значка какой-нибудь программы. Возможно ли убрать переключатель рабочих столов?
Потребовалось начертить небольшую схему с элементами вроде 2И-НЕ, в Dia не нашёл подходящих элементов (плохо искал? по идее ведь часто должны требоваться...), но, на первый взгляд показалось, что сделать их самому легко. В конце письма пример, который почти работает. А «почти» потому, что после сохранения и последующей загрузки файла с такими элементами символы «&» вдруг все съехали вправо вниз... Причём некоторыми манипуляциями их можно заставить вернуться обратно. У меня что-то неправильно, или это глюк Dia? Может в создаваемых объектах нельзя использовать текст, и символы нужно рисовать?
А вот собственно пример файла .shape для элемента 2И-НЕ:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns="http://www.daa.com.au/~james/dia-shape-ns" xmlns:svg="http://www.w3.org/2000/svg">
<name>2AND-NOT</name>
<icon>2andnot.png</icon>
<connections>
<point x="0" y="1"/>
<point x="0" y="2"/>
<point x="4" y="1.5"/>
</connections>
<aspectratio type="fixed"/>
<svg:svg>
<svg:rect x="1" y="0" width="2" height="3"/>
<svg:ellipse cx="3" cy="1.5" rx="0.2" ry="0.2"/>
<svg:text x="2" y="1">&amp;</svg:text>
<svg:line x1="0" y1="1" x2="1" y2="1"/>
<svg:line x1="0" y1="2" x2="1" y2="2"/>
<svg:line x1="3" y1="1.5" x2="4" y2="1.5"/>
</svg:svg>
</shape>
Dia версии 0.97.1 из Ubuntu 10.10
Есть некие фрагменты текста, которые, кроме общей обязательной части, могут содержать или не содержать строки с дополнительной информацией, то есть, к примеру, что-то такое:
заголовок
параметр 1: значение1
параметр 2: значение2
заголовок
параметр 2: значение2
параметр 3: значение3
Порядок строк постоянен, поэтому первое, что пришло в голову, это использовать конструкции вроде (?:параметр1: (\\d+))? - то есть строчка может присутствовать, и тогда нам требуется числовое значение, а может не присутствовать, тогда оно собственно и не нужно. Но такой подход не работает :-( Так нельзя?
Вот пример кода:
#include <iostream>
#include <string>
#include <pcrecpp.h>
using namespace std;
using namespace pcrecpp;
int main(int argc, char *argv[])
{
string text = "Это тест\n"
"первое значение: 10\n"
"второе значение: 20\n"
;
RE re("Это тест\n"
"(?:первое значение: (\\d+)\n)?"
"(?:второе значение: (\\d+)\n)?"
, RE_Options(PCRE_UTF8));
int v1 = -1, v2 = -1;
bool res = re.FullMatch(text, &v1, &v2);
cout << res << " " << v1 << " " << v2 << endl;
return 0;
}
Если код в таком виде, то re.FullMatch(text, &v1, &v2) возвращает true. Если в тексте закомментировать «первое значение: 10\n» или «второе значение: 20\n», то re.FullMatch(text, &v1, &v2) возвращает false (причём если закомментировать «второе значение: 20\n», то переменная v1 всё-таки меняет своё значение, но v2 - нет, ну а если закомментировать «первое значение: 10\n», то обе переменные сохраняют значение -1).
Но вот если не пытаться получить значения из скобок, то есть вместо re.FullMatch(text, &v1, &v2) написать re.FullMatch(text), то результат во всех трёх случаях - true. То есть получается, что само регулярное выражение срабатывает как нужно, дело лишь в том, что FullMatch может не хватать результатов чтобы записать в заданные переменные.
Похоже нельзя обработать такой текст одним регулярным выражением, нужно анализировать каждую строку отдельно? Или может всё-таки есть возможность не усложнять код и использовать одно регулярное выражение?
Обычно при покупке того или иного железа мне не приходило в голову консультироваться с продавцами, будет или нет оно работать под Linux - вряд ли большинство из них смогут на это ответить. И наверное многие поступают так же. Но в результате ведь нарушается обратная связь с производителем, информация от продавцов может использоваться при анализе спроса, а если про совместимое с Linux оборудование у них не спрашивают, производитель может решить, что и спроса нет... Мне кажется, стоит при выборе оборудования задавать по этому поводу вопросы продавцам, особенно в случаях когда продавец сам подходит к клиенту и спрашивает, что тот ищет.
Не очень давно видел на LOR идею разместить рекламу Linux, примерно как к выходу Firefox 1.0 размещали рекламу в New York Times. А если делать что-то такое на местном уровне (ролик на электронном табло, небольшая реклама в газете, баннер на сайте и т.п.), может уже есть готовые материалы для этого? И есть ли юридические тонкости, которые нужно знать при создании рекламы? Например, наверное нельзя использовать логотипы дистрибутивов? Всё-таки это чужие торговые марки... И наверное могут быть сложности если построить рекламу на противопоставлении с Windows, например если сказать, что Windows подвержена вирусам, это могут расценить как подрыв чужой деловой репутации?
вперед → |