LINUX.ORG.RU

Сообщения eugine_kosenko

 

Почему не уменьшается время в мультипоточной программе?

Форум — Development

Вот такая программа:

#include <thread>
#include <vector>
#include <iostream>

using namespace std;

clock_t etime[128];
vector<unsigned> idx[128];

void eval(unsigned n, unsigned m, unsigned i) {
  etime[i] = clock();
  for (unsigned j = i; j < n; j += m) {
    idx[i].push_back(j);
  }
  etime[i] = clock() - etime[i];
}

int main(int argc, char **argv) {
  unsigned M = atoi(argv[1]);

  for (unsigned i = 0; i < M; i += 1) {
    eval(250000, M, i);
  }

  for (unsigned i = 0; i < M; i += 1) {
    cout << "seq " << etime[i] << endl;
  }
  
  vector<thread> threads;
  for (unsigned i = 0; i < M; i += 1) {
    threads.push_back(thread(eval, 250000, M, i));
  }

  for (auto &th : threads) {
    th.join();
  }
  
  for (unsigned i = 0; i < M; i += 1) {
    cout << "par " << etime[i] << endl;
  }
  
  return 0;
}

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

$ ./test 1`
seq 7737
par 8529

$ ./test 4
seq 2756
seq 2615
seq 1810
seq 1675
par 12601
par 18108
par 18546
par 15692

Что может быть не так? Может, тут неприменим clock?

 

eugine_kosenko
()

Программное обеспечение речевой системы Стивена Хокинга выпущено под свободной лицензией

Новости — Мультимедиа
Группа Мультимедиа

Intel выпустила программное обеспечение системы, которая воспроизводит речь Стивена Хокинга с помощью компьютера, под свободной лицензией. Это значит, что оно выпущено с открытым кодом и любой желающий может использовать и преобразовывать его, сообщается на портале ubergizmo.com.

Intel описывает АСАТ (вспомогательный инструментарий для контекстно зависимых), как «разработанную в Intel Labs платформу с открытым кодом, которая позволяет людям с заболеванием двигательных нейронов и другими нарушениями иметь полный доступ к возможностям и приложениям своих компьютеров, с помощью ограниченных интерфейсов, которые подходят для их состояния».

Однако программное обеспечение может быть использовано только на компьютерах, поддерживающих Windows, и не подходит для Mac. Оно также требует наличия веб-камеры, которая позволит компьютеру понимать команды.

>>> Подробности

 ,

eugine_kosenko
()

Можно ли читать тексты с помощью DVD-проигрывателя или игровой консоли?

Форум — General

Имеется ввиду DVD-проигрыватель вообще и BBK DV414SI, в частности. Аналогично, любая игровая консоль, в частности, Sony PS2.

Формат текстового файла неважен, скажем, для определенности, txt, html, pdf, fb2, djvu --- они все несложно преобразуются друг в друга.

Смысл в том, чтобы слить с нормального компа на DVD/флэшку набор текстов, и потом иметь возможность читать их с экрана телевизора с помощью упомянутых устройств.

Интересуют именно тексты, а не аудио/видео-книги, о которых так ярко и красочно рассказал Гугль.

Понимаю, что извращение, но условия того требуют. Интересует не обсуждение вопроса «нужно или не нужно?», а конкретный ответ на вопрос «возможно ли в принципе, на каких устройствах и как именно?»

 

eugine_kosenko
()

Ошибка обращенных карточек в Anki 2.0.32?

Форум — Desktop

Сейчас использую Anki 1.2.11. Узнал, что желательно обновиться до последней версии 2.0.32: документация на сайте для нее, разделяемые колоды --- тоже.

Загрузил, запустил. Если ввести запись из двух слов и выбрать раскладку с прямой и обратной карточкой, то и в самом деле добавляются две карточки. Но при повторении два раза задается прямой вопрос и требуется обратный ответ. Пытался делать по разному. Например, если завести три карточки, то три раза спросят по первому варианту. Если переставить местами прямую и обратную карточку в шаблоне, то два раза предлагают ответить на обратную карточку. То есть, похоже, всегда выбирается только первая карточка в шаблоне.

Похоже, ошибка в Anki версии 2.0.32? Или я что-то не так делаю? Проявляется ли это поведение еще у кого-нибудь? И вообще, какую версию посоветуете взять для работы?

 

eugine_kosenko
()

Как объединить значения для стандартных полей Recoll?

Форум — Desktop

Мне понадобилось добавить к стандартным полям Recoll значения, не заданные в метаданных документа. Допустим, есть такой документ:

  <html>
    <head>
      <meta name="author" content="Kosenko" />
      <meta name="m:author" content="Maverik" />
      <title>An Example</title>
     </head>
    <body>
      Example
    </body>
  </html>

Здесь поле author является стандартным, а m:author --- пользовательским. Чтобы задать это поле, в fields указывается:

  [prefixes]
  m:author=XYMA

  [stored]
  m:author=

Предположим также, что это результат обработки, например, pdf-файла, исправлять который я не хочу или не могу. Мне нужно добавить значение Constructor к полю author и значение Eugine к полю m:author. Для этого в recoll.conf помещается объявление вида:

  [~/study/recoll/metadata/trial]
  metadatacmds = ; author = echo "Constructor"; m:author = echo "Eugine";

Логично ожидать, что теперь после индексации приведенного документа в поле author будет записано «Kosenko - Constructor». а в поле m:author --- значение «Maverik - Eugine». Однако оказывается, что поле «m:author» приняло ожидаемое значение, а поле author --- нет. В нем прописывается только внутреннее значение Kosenko, полученное в результате обработки самого документа. Внешнее значение, заданное командой metadatacmds, не добавляется.

Интересно, что если добавить в документ еще один метатэг, например, так:

  <meta name="author" content="Constructor" />

то это значение добавляется к полю, но без дефиса-разделителя: «Kosenko Constructor». Это поведение одинаково как для стандартных, так и для пользовательских полей. А вот если к полю m:author добавить еще одно внешнее значение, скажем, так:

  [~/study/recoll/metadata/trial]
  metadatacmds = ; m:author = echo "Eugine"; m:author = echo "Creator";

то последнее значение в последовательности просто перекрывает все предыдущие.

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

Непонятно, в чем тут принципиальное отличие в значениях стандартных и пользовательских полей, и можно ли его преодолеть, не ковыряясь в исходниках?

 

eugine_kosenko
()

Можно ли преобразовать кодировку описания коммитов Git?

Форум — Development

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

Насколько я понял, информация в каталоге .git/logs содержит только журналы действий пользователя, и к описанию коммитов никакого отношения не имеет. В частности, прямое перекодирование файлов .git/logs/HEAD и .git/logs/refs/master никакого эффекта не дало.

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

Посему вопрос: может ли эта проблема быть решена другим способом? Есть ли инструменты для решения подобных задач?

 

eugine_kosenko
()

Как подружить Vim и Fish?

Форум — Desktop

Так получилось, что использую в качестве редактора Vim, а в качестве командной оболочки --- Fish.

Если в Vim набрать команду вида

:r!ls

То возникает ошибка типа

Illegal command name '(ls)'

fish: (ls) > /tmp/.private/maverik/vJRqErQ/0

В принципе, понятно --- Fish не воспринимает круглые скобки, как изоляцию команды. По идее, скобки для Fish вообще не нужны.

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

Пока что обошел проблему заданием переменной sh=«/bin/bash» в Vim, но хотелось бы получить гладкую интеграцию.

Может ли кто подсказать, где копать, чтобы изменить формат команды при вызовах типа указанного?

 , ,

eugine_kosenko
()

FOSS-средства анализа читаемости текста

Форум — Desktop

Не знаю, как в нынешних версиях, а вот еще в Word времен 2000 довелось увидеть некий инструмент, позволяющий проанализировать качество текста на предмет читаемости. Речь идет не только об отстутствии орфографических и грамматических ошибок, но и о грамотном использовании синонимов, общем словарном запасе, учете зубодробительных сочетаний звуков и т. п.

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

Так вот, интересно, как вообще называются подобные анализаторы? И есть ли что-то общепризнанное (ну или вообще хоть что-то) в мире FOSS? Интересуюсь не спора ради, а эффективности для.

 , ,

eugine_kosenko
()

HTTP-запрос для получения только заголовка без содержимого

Форум — Web-development

Имеется некий абстрактный url вида http(s)://a.b.c/get-me. Интересует, как получить тип и размер этого ресурса, не выкачивая при этом сам ресурс. В принципе, это значения Content-Type и Content-Length в заголовке ответа, которых (я думаю, пока) будет достаточно.

Беда однако в том, что при простой выборке по url мне, кроме заголовков, будет возвращен и сам ресурс, чего мне на первом этапе не нужно. Ибо запрашиваемый файл может быть очень большого размера. Кроме того, нет смысла выбирать ресурс, если он не подойдет мне по типу.

Предполагаю, что такая задача должна решаться правильным заданием значения в заголовке запроса. Но беглое изучение справочника по заголовкам ответа не дало. Может, поставленная задача слишком необычна?

Может ли кто подсказать (правильное) решение?

 , ,

eugine_kosenko
()

Проблемы с удалением твитов через Twitter API

Форум — Web-development

Стоит задача удалить из профиля Twitter около 3000 спамовых твитов. Все твиты созданы в один день, я могу даже построить их список. При этом они странно устроены, например, поиск по пользователю и дате их не находит ни через сайт ни через API, хотя в ленте этого пользователя они видны и на сайте и через API.

Но дело даже не совсем в этом. Я освоил Twitter API настолько, что успешно могу создать новый твит с помощью statuses/update, то есть, видимых проблем с авторизацией доступа я не вижу. Однако при попытке удалить такой свежесозданный твит по идентификатору с помощью statuses/destroy через тот же самый интерфейс приводит к ошибке

{"errors":[{"message":"Your credentials do not allow access to this resource","code":220}]}

Права приложению я дал полные, иначе как бы мне удалось создать новый твит?

Правда, не совсем понятно, в документации по statuses/destroy указывается, что id твита нужно задавать в url, и одновременно там же приводится необходимость задать id уничтожаемого твита как параметр. Я пробовал разные комбинации, но все завершаются с одним и тем же результатом.

Может быть, я использую для уничтожения не тот метод, и какой в таком случае нужно использовать? Может ли кто объяснить, что я еще делаю не так?

 ,

eugine_kosenko
()

Как разрезать книгу для прошивки?

Форум — Desktop

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

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

Вопрос: как обеспечить такую верстку текста?

Понятно, что TeX мне в руки и вперед. Но есть ли какие-нибудь стандартные решения без сложного освоения? Может быть, есть специальный софт для этого?

 ,

eugine_kosenko
()

[haskell] Record Syntax для вложенных типов (что изменилось?)

Форум — Development

Возвращаясь к этой теме:

http://www.linux.org.ru/forum/development/4354508

Стандартного модуля Data.Accessor в 7.0.3 я почему-то не нашел, доку по нему тоже, нашел только вот это:

http://haskell.org/haskellwiki/Record_access

Получается, что стандартные аксессоры выкинули?

 

eugine_kosenko
()

Поддержка динамических языков в Java 7

Новости — Документация
Группа Документация

В JSR 292 предлагают реализовать динамический вызов метода без указания типов аргументов (invokedynamic) и инъекцию интерфейсов, которая позволит «на лету» добавлять в класс новые методы. Хотя «родная» реализация eval все еще под вопросом (в основном, из-за проблем с безопасностью), предложенные изменения повысят скорость исполнения программ на JavaScript в несколько тысяч раз и практически сравняют ее со скоростью исполнения программ на Java.

>>> Подробности

 , ,

eugine_kosenko
()

[haskell] Множества как монады

Форум — Development

Ведь очевидно, что такая же монада, как и список, почему же не реализовано из коробки?

 

eugine_kosenko
()

Haskell Cafe на русском?

Форум — Development

Есть ли русскоязычный аналог HC, или вся активность сосредоточена в ЖЖ? Интересует возможность получить ответы на, возможно, глупые вопросы от новичка.

eugine_kosenko
()

[haskell] Перебор значений для упорядоченных дискретных типов

Форум — Development

Пусть для некого типа а определены

first :: Maybe a

last :: Maybe a

succ :: a -> Maybe а

pred :: а -> Maybe a

Очевидно, что этот тип автоматически реализует Ord и Ix. Непонятно, почему эти определения не включены в Ix?

 

eugine_kosenko
()

[haskell] Record Syntax для вложенных типов

Форум — Development

data D1 a = D1 { v :: a }

data D2 a = D2 { d1 :: D1 a }

setV :: a -> D2 -> D2

setV u d2 = d2 { d1 = (d1 d2) { v = u }}

Это правильно? И можно ли это сделать проще?

 

eugine_kosenko
()

[haskell] Числа как конструкторы типов

Форум — Development

Разрешены ли определения вида:

data Rank = 7 | 8 | 9 | 10 | J | Q | K | A

или с использованием синтаксического сахара:

data Tricks = 0..10

?

 

eugine_kosenko
()

[haskell] Мемоизация в базу данных

Форум — Development

Существуют ли стандартные решения по мемоизации во внешнюю базу данных? Насколько они сложны из-за использования ввода-вывода? Допустимо ли в таких случаях использовать unsafePerformIO?

 

eugine_kosenko
()

Разработчики Opera: модель разработки Open Source неэффективна

Новости — Проприетарное ПО
Группа Проприетарное ПО

Один из основателей Opera Software, Йон фон Течнер, в интервью «Компьютерному обозрению» заявил:

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

>>> Подробности

 opera opensource

eugine_kosenko
()

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