LINUX.ORG.RU

Сообщения Minoru

 

Статический фрейминг в XMonad

Связано с темой в Talks: Зачем вообще нужно функциональное программирование?
Имею (в обоих смыслах этого слова) конфигурацию XMonad с воркспейсом, поделенным на два Layout.Tabbed горизонтально. Можно ли сделать, чтобы при активации Alt-<n> XMonad поднимал n-ное окно в текущем Tabbed, а не n-ное окно на текущем воркспейсе?

Minoru
()

Зачем вообще нужно функциональное программирование?

И так, вот уже сколько лет прошло с момента выхода первых версий Haskell. И что мы в итоге имеем?

  • XMonad - тайловое поделие для красноглазиков. В силу ущербности языка, для добавления элементарных фишек фреймовых оконных менеджеров нужно переписать ядро;
  • Emacs - тренажер для пианистов от малонужного красноглазого хиппи.
  • Кучка скобочных поделий, не запускающихся без бубна и падающих от каждого чоха
  • Сообщество гиков, мечтающих купить что-нибудь в интернет-магазине, написанном на предмете своего фетиша;
  • Кипы бумаги, имитирующие труды математиков (в реальной жизни без всякого заззрения пишущих на Delphi/Pascal)

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

Minoru
()

Мистика с поющими дросселями

Столкнулся со свистом (~784 Гц) из системного блока. Интересное заключается в том, что свист прекращается, если выключить монитор или поднять яркость выше 80%. Но свист идет именно из системного блока.

Монитор подключен через D-Sub. Кто-нибудь может навскидку сказать, в чем может быть проблема?

Minoru
()

[Thunderbird][IMAP] не синхронизировать удаление

Собственно, проблема: есть аккаунт, который проверяется по IMAP. Иногда он проверяется по POP3 с удалением почты. Как сделать, чтобы Thunderbird не удалял уже сохраненные сообщения даже если они удалены на сервере?

Я пробовал гуглить, но не нашел ничего интересного.

 ,

Minoru
()

Претензии к gvim

1) Как убрать серый промежуток в самом низу экрана (под надписью Already oldest change)? http://pix.academ.org/img/2011/12/15/d73331388f052b2210f44757bdeca145.png

2) Абсолютно не устраивает поведение taglist:

  • Прочтение файла - это очень дорогая операция на медленных сетевых моунтах. Можно ли заставить использовать содержимое буфера вместо этого?
  • Можно ли научить сохранять состояние в файлы проектов, как в IDE? Мести все в одну кучу - это крайне неудобно
  • Работа не синхронизирована со стандартными теговыми функциями Vim. Скажем, при нажатии Ctrl+] на упоминании функции F получаем 'no tags cache', хотя в таглисте присутствует определение F.
Minoru
()

SSD и Linux

Собственно, риобрел себе данный девайс.

Соответствующие меры уже приняты (noatime, nodiratime, discard в опции ядра, /tmp, /run - в ramfs), но меня напрягает периодичное мигание индикатором HDD. Журналирование не отлючал. Можно ли как-то отследить, что именно происходит?

Ubuntu 11.10, ядро 3.0.0.

Minoru
()

Объединение буферов обмена

Как известно, на большинстве Linux-десктопов есть 2 буфера обмена. Если я не ошибась, собственно иксовый (далее PRIMARY) и предоставляемый тулкитами Gtk/Qt (далее CLIPBOARD).

На самом деле, очень неудобно. К примеру, при активации сочетания клавиш Shift+Insert в некоторых программах вставляется содержимое первого буфера, а в некоторых - второго. И мне приходится лезть за мышкой, чтобы вставить ссылку, скопированную из Vimium в gnome-terminal. Я понимаю, что здесь наверняка найдутся люди, оправдывающие такое поведение, но можно ли заставить компьютер вести себя следующим образом?

  • Если в PRIMARY помещается новое значение, то это же значение помещается и в CLIPBOARD
  • Если в CLIPBOARD помещается новое значение, то это же значение помещается и в PRIMARY

Был бы премного благодарен.

Minoru
()

[google search] клавиатурная навигация

Некоторое время у гугла была очень удобная фишка - можно было ходить по результатам поиска при помощи клавиш вверх/вниз: .http://www.digitalart.by/stats/info_webmaster/golubaya-strelka-google/

Потом куда-то исчезло (по крайней мере для меня). Кто-нибудь знает, как включить обратно? Чистка куки не помогает, ничего на эту тему не нашел.

Minoru
()

Миграция Thunderbird 2 -> 3

Кто-нибудь знает, что нужно сделать, чтобы импортировать сообщения из ThunderBird 2 в 3?

В интернетах не нашлось ничего особо вкусного.

Minoru
()

docbook и русский язык

Не могу заставить работать русский язык в docbook:

$ docbook2pdf docbook1.sgml 
Using catalogs: /etc/sgml/catalog
Using stylesheet: /usr/share/docbook-utils/docbook-utils.dsl#print
Working on: /home/minoru/docbook1.sgml
openjade:/home/minoru/docbook1.sgml:39:15:E: non SGML character number 129
openjade:/home/minoru/docbook1.sgml:39:17:E: non SGML character number 130
Пытался гуглить, но бесполезно. Такое ощущение, как будто у всех это работает из коробки, кроме меня. Что можно с этим сделать? (кодировка, естественно, utf8).

Minoru
()

Есть ли хотя бы одна машина, на которой работает DocBook?

Вот простейший пример из википедии:

 <?xml version="1.0" encoding="UTF-8"?>
 <book xml:id="simple_book" xmlns="http://docbook.org/ns/docbook" version="5.0">
   <title>Very simple book</title>
   <chapter xml:id="chapter_1">
     <title>Chapter 1</title>
     <para>Hello world!</para>
     <para>I hope that your day is proceeding <emphasis>splendidly</emphasis>!</para>
   </chapter>
   <chapter xml:id="chapter_2">
     <title>Chapter 2</title>
     <para>Hello again, world!</para>
   </chapter>
 </book>
и вот что говорит docbook:
$ docbook2dvi docbook.sgml 
Using catalogs: /etc/sgml/catalog
Using stylesheet: /usr/share/docbook-utils/docbook-utils.dsl#print
Working on: /home/minoru/Downloads/docbook.sgml
openjade:/home/minoru/Downloads/docbook.sgml:2:1:E: prolog can't be omitted unless CONCUR NO and LINK EXPLICIT NO and either IMPLYDEF ELEMENT YES or IMPLYDEF DOCTYPE YES
openjade:/home/minoru/Downloads/docbook.sgml:2:1:E: no document type declaration; will parse without validation

Кто-нибудь знает в чем дело? Так же, как быть с кириллицей?

Minoru
()

[c++] Объектный интерфейс плагинов

Имеем common.h:

#ifndef _COMMON_H
#define _COMMON_H
#include <stdio.h>
using namespace std;

class Figure {
	public:
	virtual int draw(int x, int y) {
		printf("draw: %d %d\n", x, y);
	}
	virtual int print_hello() {
		printf("Hello World!\n");
	}
};

#endif
circle.cpp компилируется в circle.so, а класс Circle наследуется от Figure:
#include <stdio.h>
#include "common.h"

using namespace std;

class Circle : public Figure {
	public:
	virtual int draw(int x, int y) {
		printf("circle\n");
	}
};

Возможно ли теперь достать Figure из circle.co каким-нибудь похожим способом?

Figure *circle = loadPlugin("./circle.so");
circle->draw(0,0); // printf("Circle\n")
Важно, чтобы loader не приходилось перекомпилировать для новых плагинов. Сircle.cpp можете отредактировать как угодно (но все-таки желательно с сохранением идеи).

 

Minoru
()

Ускорить curlftpfs

Использую curlftpfs для того, чтобы редактировать файлы на серверах. Скорость передачи раз в 10 медленнее чем в mc. Я много гуглил и видел аналогичные вопросы, но так и не нашел решения проблемы. Воспользовался сниффером - проблема именно в медленной передаче данных. Что с этим можно сделать?

Minoru
()

[google chrome] localStorage internationalized strings

Собственно, проблема: Пишу расширение для google chrome, в котором есть опция в настройках хранящаяся в localStorage в кодировке utf-8, и content script, запускаемый расширением через chrome.tabs.executeScript, который через chrome.extension.sendRequest получает эту опцию у расширения. Проблемы начинаются когда content script отрабатывает на сайте с кодировкой cp1251: вместо значения получаются какие-то доселе мной не виданные кракозябры (вроде как, содержащие в себе кириллические знаки).

В Firefox это прекрасно разруливалось при помощи getComplexValue(..., Components.interfaces.nsISupportsString), но здесь этого нет, и хром 10-й версии этого автоматически не делает.

Поменять кодировку на сайте не могу, пытаться построить костыли iconv-а на javascript очень не хочется. Каково может быть решение проблемы?

 

Minoru
()

[javascript][firefox] загрузить javascript после onpageload

Имею javascript-код, отрабатывающий в событии onpageload в chrome (неймспейсе, в котором работают аддоны, а не Google Chrome), не имеющий доступа к javascript-объектам и функциям, определенными на странице, которые мне, конечно же, очень надо вызвать.

Поступаю следующим образом:

// Работает
		var script = doc.createElement('script');
		script.setAttribute('type', 'text/javascript');
		script.innerHTML = 'function alert_1() { alert("1"); }';
		var body = doc.getElementsByTagName('body')[0];
		body.appendChild(script);
		start.setAttribute('onclick', 'alert_1()');

При нажатии на start alert отрабатывает - отлично. Проблема в том, что в реальной задаче нужно выполнить достаточно сложный код, пихать который в однострочник ни руками, ни генераторами кода не хотелось бы. start.AddEventHandler('click', function alert_1() { ... }, ..) отпадает по той причине, что в реальной задаче потребуется вызывать функции, определенные в javascript-е страницы, а как мы помним, из chrome такая возможность недоступна.

Решение кажется очевидным - подгрузить код из внешнего файла через аттрибут src:

		var script = doc.createElement('script');
		script.setAttribute('type', 'text/javascript');
		script.setAttribute('src', 'chrome:///myext/contents/alert_1.js');
		var body = doc.getElementsByTagName('body')[0];
		body.appendChild(script);
		start.setAttribute('onclick', 'alert_1()');
Но не тут-то было. Код, подгруженный тегом <script>, виден в firebug, но не отрабатывает. Соответственно, при нажатии на start в консоли видно сообщение об отсутствии метода alert_1().

Судя по всему, javascript элементарно не подгружается из-за того, что страница, вроде как, уже загружена. Можно ли как-то силой заставить его подгрузиться?

 ,

Minoru
()

[tcl] применение листа к функции

Пусть fun - функция:

proc fun {x y} {
   puts $x
   puts $y
}
а args - произвольный лист. Как заставить fun выводить первое и второе значение произвольного листа?

eval не подходит, так как args может содержать «плохие» символы.

В Lisp была нужная мне функция apply.

 

Minoru
()

[tcl] слияние листа в строку

Есть ли в tcl полноценный аналог перлового join?

Стандартный join, как я понимаю, не подходит:

% set str1 "a b c"
a b c
% set str2 [join $str1 " "]
a b c
% lindex $str2 0
a
А правильный ответ - a b c.

 

Minoru
()

[ubuntu][nvidia] GeForce 5700 LE - зависания при загрузке

Испытываю проблемы с сабжем. Перепробовал различные версии драйвера - 96.43.18, 173.14.23, 173.14.28. С 96.43.18 все работает нормально, но при первой загрузке, как правило, полностью зависает через 10 секунд - даже терминалы не переключить (после перезагрузки работает нормально). Кроме того, часто подвисает при попытке войти в gdm. С 173.14.23 зависает почти сразу же после запуска, с 173.14.28 все работает нормально, кроме OpenGL.

Можно ли решить эту проблему не меняя видюшку и не отказываясь от OpenGL? Дистрибутив - Ubuntu 10.10, так же пробовал на 10.04.

 ,

Minoru
()

[SBCL][FFI][CL-GTK2][Мэджик] непредсказуемое поведение FFI

В процессе написания биндингов к gtksourceview столкнулся со странной проблемой.

Загрузим в SBCL кусок кода:


(in-package :gtk)
(load-foreign-library "libgtksourceview-2.0.so")

(define-g-object-class "GtkSourceLanguageManager" source-language-manager
                       (:export t :interfaces
                        ())
			())

(defcfun gtk-source-language-manager-get-language-ids
	:pointer
	(language-manager (g-object source-language-manager)))

(defun get-language-list (language-manager)
	(let ((pointer (gtk-source-language-manager-get-language-ids language-manager)))
	(loop with i = 0
	      until (null-pointer-p (mem-aref pointer :pointer i))
	      collect (mem-aref pointer :string i)
	      do (incf i))))

теперь можно заметить, что код

(setq *lm* (make-instance 'source-language-manager))
(get-language-list *lm*)
работает нормально, а вот это - нет:
(make-instance 'source-language-manager)
(get-language-list *)
- нет:
* (make-instance 'source-language-manager)

(<unknown>:4278): GLib-GObject-CRITICAL **: g_object_newv: assertion `G_TYPE_IS_OBJECT (object_type)' failed

(<unknown>:4278): GLib-GObject-CRITICAL **: g_object_add_toggle_ref: assertion `G_IS_OBJECT (object)' failed

(<unknown>:4278): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed

#<SOURCE-LANGUAGE-MANAGER {C587AB9}>
* (get-language-list *)

(<unknown>:4278): GtkSourceView-CRITICAL **: gtk_source_language_manager_get_language_ids: assertion `GTK_IS_SOURCE_LANGUAGE_MANAGER (lm)' failed
CORRUPTION WARNING in SBCL pid 4278(tid 3085097760):
Memory fault at 0 (pc=0xc52a6f5, sp=0xb7985ba8)
The integrity of this image is possibly compromised.
Continuing with fingers crossed.

debugger invoked on a SB-SYS:MEMORY-FAULT-ERROR in thread #<THREAD "initial thread" RUNNING {BECF659}>:
  Unhandled memory fault at #x0.

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.

(SB-SYS:MEMORY-FAULT-ERROR)
0]
Хотя, на первый взгляд, это и не мешает использованию таких биндингов, это вызывает у меня справедливое беспокойство. В чем может быть дело? Подозреваю memory corruption где-то в ffi. Прошу лисперов помочь мне.

 ,

Minoru
()

Linux и Suspend

Имею: комп с Ubuntu Karmic i686 и ion3.

Когда я запускаю pm-suspend, то ничего не происходит. Вывод pmi:

minoru@minoru-desktop:~$ pmi capabilities
hibernate
hibernate через pmi работает нормально. Как можно решить проблему?

Minoru
()

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