LINUX.ORG.RU

Сообщения init_6

 

Суровая красноглазая gentoo и такой удобный CentOS 7

Итак rpm based CentOS 7, энтерпрайз во все поля. Первая мысль - „Сволочи верните мне мои глаза!“. Чтоб получить вменяемые шрифты надо ставить левые репы (я повторяю сраные левые репы потому-что в официальных я этого вообще не нашел) где добрые люди собрали fontconfig и freetype с патчами infinality.

Ладно поехали дальше - b43, broadcom-sta, nvidia-drivers? Нет CentOS о них не слышал. И опять же спасибо левым репам потому что в официальных этого НЕТ. И ладно хрен с ними с broadcom и nvidia но что не так с b43? Фирмварь у нее несвободная или что? А сам модуль но без фирмвари что тоже религия не позволяет? Ладно rpmbuild --rebuild && профит и поехали дальше.

Дальше я захотел mpv! Ага щаааз... В общем если кратко то опять же пользуясь исключительно официальными репами это решается НИКАК. В поисках того как же получить ffmpeg из официальных реп нахожу этот шедевр ffmpeg wiki:CompilationGuide/Centos ЛОЛЧТО? ./configure && make && make install вы ничего там не попутали? К примеру вы там LFS/SlackWare с CentOS не попутали?

Короче чтоб в CentOS получить mpv-0.6.0 нужны опять же сраные левые репы, ровные руки и gentoo-шный скилл сборки помноженный на rpm, rpmbuild.

А теперь ВНИМАНИЕ сравнение с наколенной, красноглазой gentoo:

  • Патчи infinality изкоробки.
  • b43 изкоробки.
  • Фирмварь для b43 тоже изкоробки.
  • broadcom-sta изкоробки.
  • nvidia-drivers изкоробки.
  • ffmpeg изкоробки.
  • libav изкоробки.
  • mplayer изкоробки.
  • mplayer2 изкоробки.
  • mpv изкоробки.

„Изкоробки“ в данном случае означает что ничего левого вообще подключать не нужно а достаточно выполнить emerge <пяпя>.

 , ,

init_6
()

Небольшое обновление sys-devel/ipatch::init6 и app-portage/ibashrc::init6

ipatch теперь с Makefile и с man-ом.
ipatch нужен для упрощения потоковой обработки т.е. <наложения/отката> большого количества патчей.
Автоматическое разархивирование на основе mime-типов.
Автоматический подбор параметра -p NUM --strip=NUM Strip NUM leading components from file names команды patch.
Автоматическая проверка корректности применения каждого патча.
Анонс с примерами на ЛОРе.

ibashrc теперь использует ipatch добавлены примеры настроек.
ibashrc - велосипед реализующий epatch_user минуя portage.
Преимущества смотри ipatch а главное все патчи которые невозможно применить попросту пропускаются и не вызывают аварийную остановку ebuild-а.
Кроме того при помощи ibashrc можно задавать индивидуальные FEATURES, CFLAGS или вообще компилятор gcc, clang llvm, icc для отдельного ebuild-а или сразу целой категории.
Анонс с примерами на ЛОРе.

Установить можно элементарно emerge sys-devel/ipatch::init6 app-portage/ibashrc::init6 форки и исправления всячески приветствуются.

Stay Tuned!
Haters gonna hate.
Дискасс.

 , , ,

init_6
()

calibre, 21й век, utf-8??? не не слышал!

Вот это самое calibre в 21м веке все еще перекодирует все имена книг в «библиотеке» в ASCII для совместимости с „упоротомыми ОСями в которых всё еще нет нормальной поддержки UTF-8“.

Ну и для затравки цитата от самого автора (не скажу какой он национальности… но вы поняли да) ;P

http://www.mobileread.com/forums/showthread.php?t=99705

There's no way to make an application like calibre that supports a multitude of operating systems, devices, etc that also writes file names with non ascii chars.

Это ^ Как говорится ВНЕЗАПНО и „а мужики то и не знали“!

Да, если что, написано calibre на #!/usr/bin/env python последняя версия требует PyQT-5 и QT-5…

Это вам все для информации. А я пока ищу ему замену и велосипедю фиговину вроде этой чтобы все имена файлов и директорий из ASCII//TRANSLIT обратно во вменяемый UTF-8.

 , , ,

init_6
()

dev-util/catalyst и /etc/portage/bashrc

Итак есть dev-util/catalyst wiki при сборке он пользуется конечно-же sys-apps/portage.

Внимание вопрос: Как заставить portage при работе из catalyst учитывать и обрабатывать /etc/portage/bashrc так-же как и при обычном ручном запуске portage?

ЗЫ: /etc/catalyst/catalyst.conf и /etc/catalyst/catalystrc видел но ничего про обработку системного /etc/portage/bashrc так и не нашел.

 , , ,

init_6
()

sys-devel/ipatch::init6

Кому надо, вот sys-devel/ipatch::init6 ebuild, а вот сам проект.

Для Ъ - ipatch h.

А не нужно оно затем чтобы было гораздо удобнее работать с <наложением/откатом> не просто одного единственного патча а одного единственного заархивированного патча либо сразу со всей директорией с патчами либо с еще более сложными случаями когда нужен строгий порядок работы т.е. командный файл со списком операций для конкретных патчей.

 , ,

init_6
()

OpenMW

Вон там вот пишут что:

Ранее в новостях упоминалось, что в OpenMW теперь можно пройти главный квест.

А у нас на ЛОРе ранее в новостях ничего подобного не упоминалось.

Доколе? Кому верить? И если кто тестил то как оно?

 

init_6
()

udev/systemd автоматический бэкап на usb носитель

Вот смотрите раньше было относительно просто и понятно был себе /etc/udev/rules.d/*.rules для udev-а который при появлении девайса с указанными ID_SERIAL/ID_FS_TYPE/vendor/model/и т.д. делал то что от него требовали т.е. к примеру запускал самодельный велосипед для конкретного носителя.

Пытаюсь осилить то же самое сейчас - теперь /lib/udev/rules.d/*.rules да и фиг бы с ним но из него почему-то запускают не сам самодельный велосипед для конкретного носителя а /usr/bin/systemctl --no-block start <some>@%k.service сервис systemd который уже и запускает самодельный велосипед для конкретного носителя? Серьёзно? Нахрена?

В общем поделитесь работающим велосипедом для автоматического бэкапа на заданную флешку при помощи rsync и systemd/udev если у кого есть и не жалко.

 , ,

init_6
()

python-2

В актуальном на данный момент (Вс июл 27 17:35:13 EEST 2014) dev-lang/python в gentoo известны баги но все еще не закрыты:

CVE-2014-1912 - dev-lang/python : «sock_recvfrom_into()» Buffer Overflow Vulnerability (CVE-2014-1912) - Reported: 2014-02-06 14:30 UTC

CVE-2014-4616 - dev-lang/python: _json module is vulnerable to arbitrary process memory read (CVE-2014-4616) - Reported: 2014-06-23 14:04 UTC

Запасаемся попкорном.

Дискасс!

 , ,

init_6
()

emerge @toolchain-linaro

Я просто оставлю это здесь

layman -a init6; emerge =sys-devel/binutils-linaro-2.24.0_p201406::init6 =sys-devel/gcc-linaro-4.9_p201406::init6 =sys-devel/gdb-linaro-7.7.1_p201406::init6

Либо layman -a init6; emerge @toolchain-linaro

Что такое Linaro можно узнать на их сайте.

Для Ъ не будет.

 , ,

init_6
()

app-portage/ibashrc::init6

Кому надо, вот app-portage/ibashrc::init6 ebuild, а вот сам проект.

Для Ъ - аналог epatch_user с автоподбором параметра -p NUM --strip=NUM Strip NUM leading components from file names. команды patch, заменитель lafilefixer-а и переключалка сборки любого пакета при помощи gcc/icc/clang+llvm.

Для тех кто не читал wiki /etc/portage/bashrc.

megabaks кастовать бесполезно… а для всех заинтересованных gentoo-шников тег.

 , , ,

init_6
()

mc & adb

Господа а я правильно понимаю что фактически примерно так же как и ftp:// к сабжу можно приделать и доступ к любым android девайсам посредством adb?

И если да то куда копать?

 ,

init_6
()

dwb сохранение паролей

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

Если что то то про cookies-store-policy= я в курсе. Мне не нужны кукисы. Я хочу именно запоминалку паролей.

Заранее спасибо!

 ,

init_6
()

dwb и speeddial

Есть замечательный браузер dwb так вот я хочу на месте startpage= увидеть speeddial. И значит само его я вроде-бы установил:

$ dwbem -l
==> Installed extensions:
  - adblock_subscriptions
  - speeddial
  - userscripts

Внимание вопрос - что дальше надо сделать чтобы на стартовой странице увидеть желанный speeddial?

Заранее спасибо!

 ,

init_6
()

Recovery из android-а в обычном linux

По моему если и есть что-то полезного во всем android так это именно recovery. Можно спорить на эту тему но в любом случае сабж очень полезен - понимание приходит после того как нандроид бэкап спасает тебя несколько раз подряд.

Так вот собственно сами вопросы если я всё правильно понял то recovery в android-е представляет собой initr{d/amfs} с набором софта и менюшкой. Или это все таки отдельный образ со своим ядром и initr{d/amfs}?

Короче говоря моя хотеть то же самое но на десктопе в linux. Ссылки на исходники recovery и вообще истории подобного успеха всячески приветствуются.

Ах да и о том что {SystemRescue Cd/да и вообще что угодно на iso} можно прописать в тот же grub2 и это будет «то же самое» я в курсе. Но штука заключается в том, что «тем же самым» оно не будет. Оно будет гораздо жирнее из-за того что попутно будет включать в себя кучу ненужной ерунды. Так что сразу спасибо, все подобные советы мне очень ценны и я их очень внимательно буду читать.

 , , ,

init_6
()

Тег code поломанная подсветка синтаксиса

Сам текст

http://bpaste.net/show/S6IKfHuS67WURvOboP7B/

И как оно выглядит на ЛОРе в code=JavaScript

LORCode Tools с кнопками под tango

init_6
()

LORCode Tools с кнопками под tango

Ну и раз уж пошла такая пьянка… Собственно сабж. Почти оригинальный LORCode Tools обновленный до самых свежих версий. Изменению подверглись только цвета и стили.

// ==UserScript==
// @name LORCode Tools
// @description Кнопка цитирования выделенного и панель тегов для LORCode
// @author Алексей Соловьев aka moscwich
// @author Емельянов Эдуард aka Eddy_Em -- Fork && upgrade
// @license Creative Commons Attribution 3.0 Unported
// @version 0.21.4
// @grant       none
// @namespace http://www.linux.org.ru/*
// @namespace https://www.linux.org.ru/*
// @include http://www.linux.org.ru/*
// @include https://www.linux.org.ru/*
// ==/UserScript==

// Based on MultiCodePanel 2.2 (v. 0.22)
// http://al-moscwich.tk/tag/multicodepanel

function noDef(evt){ // remove default event action
	evt.stopPropagation();
	evt.preventDefault();
}

function removeElements () {
	for (i = arguments.length-1; i > -1; i--) {
		var p = arguments[i].parentNode;
		if (p) p.removeChild (arguments[i]);
	}
}

function set (p, z) {
	for (i = 0; i < arguments.length && (arguments[i] === undefined); i++) {}
	return arguments[i];
}

i = j = undefined;
a = b = undefined;

form = document.getElementById ("commentForm") || document.getElementById ("messageForm") || document.getElementById ("changeForm").getElementsByTagName ("label")[7];
msg = document.getElementById ("msg") || document.getElementById ("form_msg") || document.getElementById ("info");
var u = window.location.href;

// Panel
var panel = document.createElement ("div");
panel.id = 'atag';
panel.createBlock =
	function () {
		block = document.createElement ("span");
		for (i = 0; i < arguments.length; i++) {
			link = document.createElement ("a");
			link.textContent = arguments[i][0];
			link.title = arguments[i][1];
			link.exec = arguments[i][2];
			link.onclick = function(e){
				noDef(e)
				eval(this.exec);
				return false;
			}
			block.appendChild (link);
		}
		return this.appendChild (block);
	}
panel.createBlock (
	["[b]", "Полужирный", 'intag ("b");'],
	["[i]", "Курсив", 'intag ("i");'],
	["[s]", "Зачеркнутый", 'intag ("s");'],
	["[u]", "Подчеркнутый", 'intag ("u");']
);
panel.createBlock (
	["[quote]", "Цитата", 'intag ("quote", "\\n");'],
	["
", "Код", 'intag ("code", "\\n");'],
	["", "Внутристрочный код", 'intag ("inline");']
);
panel.createBlock (
	["[url]", "URL", 'url ();'],
	["[user]", "Участник", 'intag ("user");']
);
panel.createBlock (
	["[list]", "Список", 'lst();'],
	["[*]", "Элемент списка", 'wrtSel ("[*]", "");']
);
panel.createBlock (
	["«»", "Кавычки", 'wrtSel ("«", "»");'],
	["„“", "Кавычки", 'wrtSel ("„", "“");'],
	["[br]", "Перевод строки", 'wrtSel ("[br]", "");']
);
panel.createBlock (
	[" fix ", "Превратить знаки и обозначения в соответствующие спец. символы", 'fix();'],
	[" deltags-in ", "Удалить крайнее входящие обрамление тегами", 'deltagsin ();'],
	[" brs ", "Добавить [br] к переводам строк", 'brs ();']
);

msg.parentNode.insertBefore (panel, msg); msg.cols = 100; msg.rows = 20;

// Styles obj = document.createElement ("style"); obj.innerHTML = '\ #atag a {\ margin:1px;cursor: pointer;\ -o-transform-origin: 14px 17px; background-color: rgb(39, 44, 45);\ border-bottom-color: rgb(114, 159, 207); border-bottom-left-radius: 5px;\ border-bottom-right-radius: 5px; border-bottom-style: solid;\ border-bottom-width: 1px; border-left-color: rgb(114, 159, 207);\ border-left-style: solid; border-left-width: 1px;\ border-right-color: rgb(114, 159, 207); border-right-style: solid;\ border-right-width: 1px; border-top-color: rgb(114, 159, 207);\ border-top-left-radius: 5px; border-top-right-radius: 5px;\ border-top-style: solid; border-top-width: 1px;\ color: rgb(114, 159, 207);\ font-family: "Trebuchet MS";\ font-size: 14px; height: 22px; line-height: 22.4px; margin-bottom: 5px; margin-top: 5px; max-height: none;\ max-width: none; padding-bottom: 5px; padding-left: 4px; padding-right: 4px; padding-top: 5px; text-align: center;\ text-decoration: none;\ width: 16px;\ }\ #atag a:hover {background-color:rgb(84, 84, 84); border-color:rgb(186, 189, 182);}\ #atag {\ margin-top: 5px; margin-bottom: 5px;\ padding: 3px 1px; font-size: 0.9em;\ }\ #atag > span {margin-right: 4px;}\ label[for="msg"] {display: inline-block; margin-top: 5px;}\ #msg {width: 50em !important;}\ label[for="title"], label[for="form_mode"] {display: inline-block; margin: 5px 0 3px 0;\ .msg_body p {margin: 0.3em 0 !important;}\ .quote > p {margin: 0.5em 0 0.3em 0 !important;}'; document.getElementsByTagName ("head")[0].appendChild (obj);

// Remove formating tips // COMMENTED (I don't know why, but it breaks whole script) /*if (u.indexOf ("add.jsp") <= -1 && u.indexOf ("edit.jsp") <= -1 && u.indexOf ("register.jsp") <= -1) removeElements (form.getElementsByTagName ('font')[0], (i = form.getElementsByTagName ('br'))[5], i[6] );*/

// Add quote links function cre_links(o, L){ var S = document.createElement("span"); console.log("LEN: " + L.length + " obj: " + o); var Ll = L.length; for (j = 0; j < Ll; j++){ qlink = document.createElement ("a"); qlink.textContent = L[j][0]; d = document.createElement("span"); if(L[j][0] == "#"){ qlink.href = getMsgURL(o); }else{ qlink.href = "#"; } d.onclick = L[j][1]; d.innerHTML = "[" + qlink.outerHTML + "] "; S.appendChild(d) } if(o.firstElementChild && o.firstElementChild.nodeName != "IMG"){ clink = o.firstChild; o.insertBefore(S, clink); }else o.appendChild(S); }

var t = document.getElementsByClassName("title"); t.createQlink = function(){ for (i = 0; i < this.length; i++){ if(this[i].parentNode.nodeName != "ARTICLE") continue; var A = Array.prototype.slice.call(arguments) cre_links(this[i], A); } }

// Add \n to <br> var mbs = document.getElementsByClassName("msg_body"); for (j in mbs) if (!isNaN (j)) { var mps = mbs[j].getElementsByTagName ("p"); for (i in mps) if (!isNaN (i)) mps[i].innerHTML = mps[i].innerHTML.replace (/<br\/?>(?![\n\r])/g, "<br>\n"); }

/* Main */

// Auxiliary functions function wrtSel(subj, offset, before, after, zset){ //Also msg.wrtSel (before, after, offset) if(typeof offset == "string") var after = offset, offset = before, before = subj, subj = undefined; var before = before || "", after = after || "", offset = set (offset, before.length), zset = zset || 0; var startSel = set (a, msg.selectionStart), endSel = set (b, msg.selectionEnd), subj = before + set (subj, msg.value.substring (startSel, endSel)) + after;

msg.value = msg.value.substring (0, startSel) + subj + msg.value.substring (endSel); msg.selectionStart = msg.selectionEnd = startSel+offset; msg.focus(); a = b = undefined; }

function lst(){ a = msg.selectionStart; b = msg.selectionEnd; z = msg.value.substring(a, b).replace(/([^\n\r]+)[\n\r]*/g, "[*]$1\n"); z = z.replace(/^[\s\r\n]+/g, '').replace(/^$/g,''); if(z.length == 0) z = "[*]\n"; wrtSel(z, 6, "\n[list]\n", "[/list]\n"); }

function addbr (c) { return c.replace (/^((?:(?!\[\/?(?:quote|code|list|br)(?:=.*)?\]$)[^\n\r])+)(\r?\n)(?!\n|\[\/?(?:br|quote(?:=.*)?|code(?:=.*)?)\])/gm, "$1[br]$2"); }

function getTextContent (post) { var text = ""; var pTags = post.getElementsByClassName ("msg_body")[0].getElementsByTagName ("p"); for (i = 0; i < pTags.length; i++) if (pTags[i].parentNode.className.indexOf ('msg_body') > -1) { text += pTags[i].textContent; if (i != pTags.length - 1) text += "\n\n"; } return text; }

function getUserName(evt){ var post = getMsg(evt.target); if (i = post.getElementsByClassName("sign")[0].getElementsByTagName("a")[0]) return i.innerHTML; else return "anonymous"; }

// Functions to run function intag (tag, arg) { var arg = arg || ""; wrtSel( undefined, tag.length + 2 + arg.length*2, arg + "[" + tag + "]" + arg, arg + "[/" + tag + "]" + arg ); }

// reparce quotations if checked in glob settings function reparce(text){ var bef = text.split("

");
	bef[0] = bef[0].replace(/"/g, "&#34;");
	var N = bef.length;
	for(var m = 1; m < N; m++){
		var aft = bef[m].split("
"); aft[1] = aft[1].replace(/«/g, »""); bef[m] = aft.join("

"); } text = bef.join("

");
	return text;
}

function fix () {
	var a = msg.selectionStart, b = msg.selectionEnd;
	var repc = function (c) {
		c = c.replace (/\(c\)/gi, "©");	c = c.replace (/\([rр]\)/gi, "®");
		c = c.replace (/\(f\)/gi, "£");	c = c.replace (/\(e\)/gi, "€");
		c = c.replace (/%\/10/g, "‰");	c = c.replace (/%\/100/g, "‱");
		c = c.replace (/\(V\)/g, "✓");	c = c.replace (/\(V\+\)/g, "✔");
		c = c.replace (/\(x\)/g, "✗");	c = c.replace (/\(x\+\)/g, "✘");
		c = c.replace (/`/g, "&#769;");	c = c.replace (/\(p\)/gi, "§");
		c = c.replace (/(^| )- /g, "$1— ");	c = c.replace (/\.\.\./g, "…");
		c = c.replace (/\(\*\+?\)/g, "★");	c = c.replace (/\(\*-\)/g, "☆");
		c = c.replace (/\([tт][mм]\)/gi, "™");
		c = c.replace (/-->/g, "→");
		return c;
	}

	if (a != b) {
		var c = msg.value.substring (a, b);
		var z = repc (c);
		wrtSel(z, 0, "", "", z.length - c.length);
	}
	else
		msg.value = repc (msg.value);
}

function url(U){
	var U = U || "";
	a = msg.selectionStart; b = msg.selectionEnd;
	z = msg.value.substring (a, b);
	if(U != ""){
		wrtSel (z, 6+U.length,
			"[url=" + U + "]", "[/url]",
			-z.length
		);
	}
	else if (/((ftp|http|https):\/\/)[\.\w- ]{2,}\.[A-Za-z]{2,4}(\/?$|\/.*)/.test(z) || z.length == 0) {
		wrtSel (z, z.length+6,
			"[url=", "][/url]"
		);
	}
	else if (/[\.\w- ]{2,}\.[A-Za-z]{2,4}(\/?$|\/.*)/.test(z)) {
		wrtSel (
			"http://"+z, z.length+13,
			"[url=", "][/url]", 7
		);
	}
	else {
		wrtSel (z, 5,
			"[url=]", "[/url]",
			-z.length
		);
	}
}

function deltagsin () {
	z = msg.value.substring (a = msg.selectionStart, b = msg.selectionEnd);
	c = z.replace (/\[\w+\](.*)\[\/\w+\]/, "$1");
	wrtSel (c, 0, "", "", - z.length + c.length);
}

function brs () {
	var a = msg.selectionStart, b = msg.selectionEnd;
	if (a != b) {
		var c = msg.value.substring (a, b);
		var z = addbr (c);
		wrtSel (z, 0, "", "", z.length - c.length);
	}
	else {
		msg.value = addbr (msg.value);
	}
}

function substTags(chN){
	if(!chN) return;
	var LORtagz = [ "b", "i","s","u","url","code","list","br","*","em","strong",
				"pre", "quote"];
	var txt = "", incode = false, latex = false;
	var Tpre="", Tpost="";
	if(chN.className == "sign" || chN.className == "reply") return "";
	if(chN.nodeName == "B"){Tpre="[b]"; Tpost="[/b]";}
	else if(chN.nodeName == "I"){Tpre="[i]"; Tpost="[/i]";}
	else if(chN.nodeName == "S"){Tpre="[s]"; Tpost="[/s]";}
	else if(chN.nodeName == "U"){Tpre="[u]"; Tpost="[/u]";}
	else if(chN.nodeName == "A"){Tpre="[url="+chN.href+"]"; Tpost="[/url]";}
	else if(chN.nodeName == "CODE"){Tpre="\n[code"+(chN.className ? "="+chN.className:"")+"]\n"; Tpost="
"; incode = true;} else if(chN.nodeName == «UL»){Tpre=«\n

\n»; Tpost=«\n»;} else if(chN.nodeName == «OL»){Tpre=«\n

\n»; Tpost=«\n»;} else if(chN.nodeName == «BR»)Tpost="
\n"; else if(chN.nodeName == «LI»){Tpre="

  • "; Tpost=«\n»;} else if(chN.nodeName == «EM»){Tpre=""; Tpost="";} else if(chN.nodeName == «STRONG»){Tpre=""; Tpost="";} else if(chN.nodeName == «PRE»){Tpre="
    \n"; Tpost="
    ";} else if(chN.nodeName == «P»){Tpre=«\n»; Tpost=«\n»;} else if(chN.nodeName == «SPAN»){Tpre=""; Tpost=«\n»;} else if(chN.nodeName == «CITE»){Tpre=""; Tpost="
    \n";} else if(chN.nodeName == «IMG»){Tpre="[latex]"; Tpost="[/latex]"; latex = true;} //else if(chN.nodeName == ""){Tpre=""; Tpost="";} else if(chN.className == «quote»){Tpre="

    "; Tpost="

    ";} if(latex) txt = chN.title; else if(incode) txt = chN.textContent; else if(chN.childNodes && chN.childNodes.length) for (var ch in chN.childNodes) txt += substTags(chN.childNodes[ch]); else if(typeof(chN.textContent) != «undefined»){ txt = chN.textContent; //.replace(/\[/g, '[[').replace(/\]/g, ']]'); for(var j in LORtagz){ var Tg = LORtagz[j]; txt = txt.split(«[»+Tg+«]»).join(«[[»+Tg+«]]»); txt = txt.split(«[/»+Tg+«]»).join(«[[/»+Tg+«]]»); } } txt = Tpre + txt + Tpost; return txt.replace(/^[\s\r\n]+$/, ").replace(/^$/,"); }

    function qb(e){ noDef(e); var post, seltxt = getSelection (); function f(s,o){ return «[quote» + (getMsg(o) != getMsg(msg) ? «=» + getUserName (e) : "") + «]» + substTags(s) + «\n\n\n»; } if (seltxt != "") { post = getMsg(seltxt.getRangeAt(0).commonAncestorContainer); wrtSel(i = f(seltxt.getRangeAt (0).cloneContents(),this), i.length); } else { post = getMsg(this); wrtSel (i = f(post.getElementsByClassName («msg_body»)[0], this), i.length); } return false; }

    function q(e) { noDef(e); var seltxt = getSelection (); if (seltxt != "") { var post = getMsg(seltxt.getRangeAt(0).commonAncestorContainer); wrtSel (i = seltxt.toString ().replace (/(\n\r?|^)(?:\n\r?)?/g, «$1> ») + «\r\n», i.length); } else { post = getMsg(this); wrtSel (i = getTextContent (post).replace (/(\n\r?|^)(?:\n\r?)?/g, «$1> ») + «\r\n», i.length); } return false; }

    function user (e) { noDef(e); if ((i = getUserName(e)) != «anonymous») wrtSel (i = " " + i + ", ", i.length); else wrtSel (i = "Аноним, ", i.length); return false; }

    function insurl(e){ noDef(e); url(e.target.href); }

    Дискасс!

    ЗЫ В теге code=JavaScript выглядит как ужас…

    ЗЫЫ Нет это надо видеть! путь будет!!!

 , , ,

init_6
()

Одного дога не хватает, двух тоже не очень…

// ==UserScript==
// @name       Three Dog
// @version    0.1
// @description  "Until next time, this is Three Dog, OWWWWWWWWW! And you're listening to Galaxy News Radio! Bringing you the truth, no matter how bad it hurts."
// @namespace *
// @include *
// @copyright  2014, init_6
// ==/UserScript==    

(function() {
  var replacements, regex, key, textnodes, node, s; 

  replacements = {
    "Москва"    : "Нерезиновск",
    "Эмигрант"  : "Понаехавший",
    "Черное"    : "Белое",
  };

regex = {}; 
for (key in replacements) { 
    regex[key] = new RegExp(key, 'g'); 
} 

textnodes = document.evaluate( "//body//text()", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); 

for (var i = 0; i < textnodes.snapshotLength; i++) { 
    node = textnodes.snapshotItem(i); 
    s = node.data; 
    for (key in replacements) { 
        s = s.replace(regex[key], replacements[key]); 
    } 
    node.data = s; 
} 

})();

Three Dog делает мир интернет на просторах столичной пустоши чище и лучше, волосы от него становятся мяяяяяяяяягкими и шелковистыми а дыхание свежим.

Пары слов использованы только в качестве примера но никак не с целью оскорбить кого бы то ни было.

Дискасс!

 , , ,

init_6
()

Вызвать eautoreconf из /etc/portage/bashrc

Сабж. Как из вот подобной ерунды либо вот такой вот в конце вызвать eautoreconf ?

 ,

init_6
()

Кнопка „Тех. разделы форума“ в трекере

Кнопка „Тех. разделы форума“ выглядит жуткой, страшной и огромной. Особенно это заметно андроедах где эта кнопка сжирает чересчур много места. К тому же слово „форума“ можно добавлять к любым кнопкам в трекере пример - „все сообщения форума“, „основные сообщения форума“…

Исходя из всего вышесказанного предлагаю вместо „Тех. разделы форума“ просто „Тех. разделы“

init_6
()

Про geek-sources

На все подобные вопросы проще ответить один раз и для всех сразу… И, опять же, отдельно для тех кто возможно был не в курсе.

Моё участие в разработке geek-sources прекращено на неопределенное время.

Причин тому достаточно.

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

Во вторых на том что осталось нет никакого смысла в gentoo. Сейчас вместо неё водружен sabayon-14.06. А ныне уже почившая в ином мире gentoo была полностью в LUKS и просто по классике полетел хард. Т.е. накрылось всё и сразу. Продолжать разработку geek-sources следовательно для начала клонировать по новой все svn/git репы… От этого и так упоротому харду лучше не станет а у меня сейчас задача чтобы железо продержалось как можно дольше.

Ну и вообще, для понимания всей ситуации, от меня до Донецка, Славянска полтора часа на машине… а до Луганска и того меньше - минут сорок. У нас на улицах пока что не стреляют и в черте города по сути, кроме цен, ничего не изменилось но по вечерам стотысячный город вымирает. С работой все туго. По телевидению говорят о том, что граница с Ростовской областью уже перекрыта а в сторону Крыма нужно всю Донецкую область проехать так что свалить тоже идея не намного умнее чем остаться. В общем весело и с каждым днем всё веселее и веселее…

А с geek-sources… Да я там даже пару багов нашел и затеял очередное изменение… И всё это когда-то попадет на github. Но вот когда именно это очень хороший вопрос.

Так что если хотите обновлений форкайте оверлей, сами бампайте и будет вам счастье. Если ещё кто-то желает иметь непосредственный доступ к самому оверлею пишите либо прям тут либо в теме пущу всех желающих до тех пор пока github будет разрешать… только указывайте свой ник с github-а.

 , , , ,

init_6
()

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